当我使用Java
将特殊字符串转换为byte []时,其结果为:
78
-19
-71
-54
-61
-87
12
-99
当我使用objective-c
转换相同的字符串时,其结果为:
78
237
185
202
195
169
12
157
为什么128
中的字节元素大于objective-c
?我知道原因是关于unsigned
,但是如何解决它?
答案 0 :(得分:0)
处理此问题的方法只是将Java字节“处理”为无符号,将其打印出来或进行比较时。最简单的方法是使用byteValue & 0xFF
将字节的无符号值作为int来获取,但是某些库可以减轻痛苦 - 例如,使用Guava's UnsignedBytes
,你可以UnsignedBytes.join(" ", byteArray)
得到空格分隔的无符号字节,例如你给出的78 237 185 ...
。 (披露:我向Guava捐款。)
答案 1 :(得分:0)
看起来Java字节已签名且Objective-C字节未签名。如果将256添加到小于0的Java字节,则会得到相应的Obj-C字节(> = 0的Java字节已经与Obj-C字节相同)。它应该很容易转换。