Java 将字节转换为带符号字节的字符串

Java 将字节转换为带符号字节的字符串,java,Java,在将有符号字节转换为字符串时,是否有保留该字节的方法?或者在转换为字符串时将其视为无符号 以下是我的代码示例: byte[] encodedBytes = new byte[RX_Index]; System.arraycopy(RX_Buffer, 0, encodedBytes, 0, encodedBytes.length); final String data = new String(encodedBytes); RX_缓冲区将包含0xBF,即-65有符号十进制数。初始化数据后,由于

在将有符号字节转换为字符串时,是否有保留该字节的方法?或者在转换为字符串时将其视为无符号

以下是我的代码示例:

byte[] encodedBytes = new byte[RX_Index];
System.arraycopy(RX_Buffer, 0, encodedBytes, 0, encodedBytes.length);
final String data = new String(encodedBytes);

RX_缓冲区将包含0xBF,即-65有符号十进制数。初始化数据后,由于某种原因,0xBF字节在转换为字符串后更改为0xFFFD。我假设问题是从字节到带负数的字符串的转换。如果不能,请告诉我。否则,如何解决此问题?

一个字节是8位有符号类型。字符是一种16位无符号类型

该字符串构造函数将给定的字节视为在Android上的UTF-8中编码的字符数据。它将把这些字节转换成UTF-16。任何与原始编码中的有效值或序列不匹配的内容都将替换为


因此,与某些语言不同,Java字符串不是二进制安全的。如果需要将数据存储为字符串,请考虑Base64编码。

< P>您的Android <代码> BlootoothSocket < /代码>(方法<代码>读取(字节)] /代码>将给您一个二进制数据的字节数组。

不要将该数据转换为字符串

如果要将二进制数据解释为整数,请使用以下代码:

int myFirstValue = encodedBytes[0];

是的,您可以将其作为位复制到整数,然后它将是正数。@LeosLiterak但如果我将这些整数转换为字符串,它们不会成为ASCII字符吗?例如,0x04将变成0x34,我不希望发生这种情况。您的数据是二进制流,还是文本?您不应尝试将二进制数据存储在字符串中,也不应尝试将文本存储在字节[]中。@slartidan这是针对android的,通过蓝牙连接从输入流接收字节。据我所知,除了字节之外,没有其他读取输入流的方法,因此不能选择以字节存储文本。我必须接收二进制数据和文本数据——我没有选择InputStream返回整数,而不是字节。