【发布时间】:2016-02-02 02:51:11
【问题描述】:
我使用字符串进行字节数组传输,但发现它有些奇怪。谁能解释一下,为什么会这样?
byte[] bytes1 = new byte[]{-104, 73, 61, -15, -92, 109, 62, -99, 50, 82, 26, 87, 38, 110, -12, 49, -104, 73, 61, -15, -92, 109, 62, -99};
byte[] bytes2 = new String(bytes1).getBytes();
//for now bytes2 is equal to: {63, 73, 61, -15, -92, 109, 62, -99, 50, 82, 26, 87, 38, 110, -12, 49, 63, 73, 61, -15, -92, 109, 62, -99}
System.out.println(Arrays.equals(bytes1, bytes2));//false
for(int i = 0; i < bytes2.length; i++){
if(bytes2[i] == 63) {
bytes2[i] = -104;
}
}
System.out.println(Arrays.equals(bytes1, bytes2));//true
ps bytes1 - 这是三重密钥字节数组。每次都不同,但只有在 bytes1 包含 -104 值的情况下才会失败。非常感谢。
【问题讨论】:
-
请说出您希望这段代码输出什么,以及它输出什么。 “一些奇怪的东西”不是一个特定的错误。
-
我在 'System.out.println' 行中添加 cmets
-
我得到错误错误检查这里ideone.com/zpPHNg
-
认为它取决于平台