在java中使用转义序列向字符串追加字节
我希望在字符串中附加一个字节,即16=0x10,使用转义序列在一行代码中完成:在java中使用转义序列向字符串追加字节,java,string,escaping,append,byte,Java,String,Escaping,Append,Byte,我希望在字符串中附加一个字节,即16=0x10,使用转义序列在一行代码中完成: String appendedString = new String('\16'+"String"); 这将导致appendedString=0x0E、0x74、0x72、0x69、0x6E、0x67的十六进制表示 使用如下\2: String appendedString = new String('\2'+"String"); 工作正常,导致appendedString=0x02,0x74,0x72,0x69
String appendedString = new String('\16'+"String");
这将导致appendedString=0x0E、0x74、0x72、0x69、0x6E、0x67的十六进制表示
使用如下\2:
String appendedString = new String('\2'+"String");
工作正常,导致appendedString=0x02,0x74,0x72,0x69,0x6E和0x67的十六进制表示
使用\10:
String appendedString = new String('\10'+"String");
结果为appendedString=0x08,0x74,0x72,0x69,0x6E和0x67的十六进制表示形式
有人可能会善意地解释这一点,并提出解决方案。谢谢。\10
是八进制的,这就是为什么你得到U+0008
我不相信有任何转义格式使用十进制;我建议使用\uxxx
格式,或支持字符的特定转义序列(\r
,\n
等)。因此,对于第二种情况,您可以使用\u000a
-或者在这种情况下只使用\n
。第一种方法是使用\u0010
有关转义序列的更多详细信息,请参见
我还强烈建议您不要将它们视为字节——它们是字符(或者UTF-16代码单元,如果您想更精确的话)。问题是您使用的是八进制转义。定义转义,包括八进制转义 八角景观: \八重晶石 \八达吉特八达吉特 \零到三个八进制数八进制数 因此,
\16
是十进制的字符14
,或十六进制的字符0x0E
字符\2
保留为十进制和十六进制的2
字符\10
是十进制的8
,或十六进制的0x08
要使用十六进制转义,请使用Unicode转义,在中定义:
UnicodeScape:
\ UnicodeMarker HexDigit HexDigit HexDigit HexDigit
UnicodeMarker:
u
UnicodeMarker u
例如
\u0016
,\u0002
,和\u0010
,阿汉,我忽略了一个事实,Java将其视为八进制。谢谢,我一直想知道为什么没有任何转义格式使用以10为基数的数字作为代码点——我的意思是用我能想到的任何语言。