如何将char转换为byte?

时间:2012-02-04 08:12:20

标签: java string casting bytearray arrays

我正在研究一个开源代码,我遇到了以下一行

stringBytes[i] = (byte) (stringChars[i] & 0x00FF);

有人可以解释一下这行中究竟发生了什么吗?

2 个答案:

答案 0 :(得分:10)

Char由Java中的2个字节组成,当然字节是单字节。

所以在这个操作中:

stringBytes[i] = (byte) stringChars[i] & 0x00FF

char值(16位)为二进制ANDED ,编号为0x00FF(二进制:0000 0011 1111 1111),使其为一个字节。

通过使用8 0s and 8 1s的二进制ANDING,您基本上屏蔽了char值的8个最左边或最高有效位(MSB),因此只保留8个最右边或最低有效位(LSB)。然后代码使用强制转换(byte)将结果值分配给一个字节,否则为int值。

答案 1 :(得分:2)

与0x00FF进行AND运算仅保留最后8位有效位,并将其他位置零。

E.g.:
0xD2A5 & 0x00FF = 1101001010100101 & 0000000011111111 = 0000000010100101 = A5