我发现这个解决方案在计算器上一个字节转换成char类型:Java的字节转换为char - 转换问题
byte b = 65;
char c = (char)(b & 0xFF);
什么,我不明白的是按位和使用0xFF。上面和这个有什么不同?
byte b = 65;
char c = (char)b;
有人可以一步一步向我解释什么是转换为什么类型?
我发现这个解决方案在计算器上一个字节转换成char类型:Java的字节转换为char - 转换问题
byte b = 65;
char c = (char)(b & 0xFF);
什么,我不明白的是按位和使用0xFF。上面和这个有什么不同?
byte b = 65;
char c = (char)b;
有人可以一步一步向我解释什么是转换为什么类型?
“& 0xff”通常用于Java中,以切断从字节到大整数类型的隐式转换的符号扩展名。
在Java中,byte是一个有符号数据类型,其中值使用二进制补码存储,所以-1表示为0xff。 -1的对应int表示是0xffffffff。因此,当从一个字节转换为一个整数时,所有附加的前导位将从该字节的最高位填充。
按位并且不需要高达0x7f的字节值。但是如果你想转换一个例如一个非中断空间(代码点160/0xa0),它将符号扩展到0xffa0,这是一个不同于预期的char值0x00a0的字符。
我认为扔掉我的东西是0xFF是一个int而不是一个字节。 –
复制http://stackoverflow.com/questions/17912640/byte-and-char-conversion-in-java –