【发布时间】:2014-12-27 01:10:53
【问题描述】:
在将 ByteBuffer 读入 b_array 后,我试图将 ascii 值转换为 int。
执行代码后我期望的输出是 129,因为(b_array[] 的十进制等效于 ascii 代码 49,50,59)
谁能告诉我我在哪里做错了。我正在执行 0xFF 以使其成为 java 中的无符号值,然后进行 OR 操作以移动字节。
byte[] b_array=new byte[3];
buffer.get(b_array,0,3);
// Contents inside the b_array in ascii code
// b_array[0]=49;
// b_array[1]=50;
// b_array[2]=57;
int value= b_array[2] & 0xFF | (b_array[1] & 0xFF) << 8 | (b_array[0] & 0xFF) << 16;
System.out.println(value);
【问题讨论】:
-
你为什么会期望 129?您正在制作的是一个四字节整数,其中三个最低有效字节设置为 49、50 和 59。这应该给您
49 * 256 * 256 + 50 * 256 + 59,而不是 129。 -
对。我可以在这个 sn-p 中进行任何更改以达到 129 吗?因为 1,2,9 的每个数字对应 49,50,59 的 ascii 值
-
要获取字符串“129”中的字符,您需要将您的 ascii 转换为字符,无论是否是字符串,而不是整数。尝试将字节的 ascii 编码为字符串。
-
是的,根据您的默认编码,
Integer.parseInt(new String(b_array))可能会起作用。
标签: java byte bytearray operator-keyword