Objective -c Byte []和Java byte []

时间:2012-04-12 01:35:43

标签: java objective-c byte

当我使用Java将特殊字符串转换为byte []时,其结果为:

78
-19
-71
-54
-61
-87
12
-99

当我使用objective-c转换相同的字符串时,其结果为:

78
237
185
202
195
169
12
157

为什么128中的字节元素大于objective-c?我知道原因是关于unsigned,但是如何解决它?

2 个答案:

答案 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字节相同)。它应该很容易转换。