Java 如何在我的字符串文字中间编码一个原始字节?(例如:“aaaXbbb”,其中X是原始字节)
我想在我的消息中间编码一个原始字节:Java 如何在我的字符串文字中间编码一个原始字节?(例如:“aaaXbbb”,其中X是原始字节),java,string,unicode,binary,byte,Java,String,Unicode,Binary,Byte,我想在我的消息中间编码一个原始字节: byte SOH = 0x01; String msg = "8=123" + SOH + "9=234"; System.out.println(msg); => 8=12319=234 这不是我想要的。我要原始字节在那里 只需用“\”转义一个字节,就可以对其进行编码 因此,要对字节0x01进行编码,可以执行以下操作: String s = "8=123\19=234"; 你知道一个字符串里面有一个字符数组,字符和字节不是一回事,对吧?是的,但
byte SOH = 0x01;
String msg = "8=123" + SOH + "9=234";
System.out.println(msg); => 8=12319=234
这不是我想要的。我要原始字节在那里 只需用“\”转义一个字节,就可以对其进行编码 因此,要对字节0x01进行编码,可以执行以下操作:
String s = "8=123\19=234";
你知道一个字符串里面有一个字符数组,字符和字节不是一回事,对吧?是的,但我想要一个简单的例子,一个字节=>一个字符。但是在Java中一个字节永远不是一个字符。一个字符总是两个字节。事实上,我没有错(尽管你可以说有些字符是四个字节而不是两个字节,但是一个
char
总是两个字节)getBytes()
不会做您认为它会做的事情。但是如果你认为你知道的更好,我会去帮助别人。一个字符串作为char[]
存储在内部,每个char
总是占用2字节的内存getBytes()
不提供这些字节的值getBytes()
使用JVM上的默认字符集*对字符串进行byte[]
编码,这通常取决于底层操作系统。例如,“€”。getBytes()
很可能在Mac和Windows计算机上给出不同的结果,即使字符串在这两种计算机上的存储方式相同。(*字符集基本上只是在char[]
和byte
[]之间转换的一种方式)请注意,这并不是真正的“字节”编码,它仍然在创建一个16位UTF字符,但这应该满足询问者(可能)的要求。