gpt4 book ai didi

Java 将字节转换为字符 - 转换问题

转载 作者:行者123 更新时间:2023-11-30 07:08:28 26 4
gpt4 key购买 nike

我在 StackOverflow 上找到了将字节转换为字符的解决方案:

byte b = 65;
char c = (char)(b & 0xFF);

我没有得到的是按位与 0xFF。上面的和这个有什么不同?

byte b = 65;
char c = (char)b;

有人可以逐步向我解释什么会转换为什么类型吗?

最佳答案

“& 0xff”通常在 Java 中用于切断从字节到更大整数类型的隐式转换的符号扩展。

在Java中,字节是有符号数据类型,其中值使用二进制补码存储,因此-1表示为0xff。 -1对应的int表示是0xffffffff。因此,当从字节转换为整数时,所有附加前导位都从字节的最高位开始填充。

对于 0x7f 以内的字节值,不需要按位与。但如果你想转换一个例如不间断的空格(代码点 160/0xa0),它将被符号扩展为 0xffa0,这是与预期的字符值 0x00a0 不同的字符。

关于Java 将字节转换为字符 - 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com