gpt4 book ai didi

java - 为什么单字节有前导 ffffff

转载 作者:行者123 更新时间:2023-11-30 10:28:45 25 4
gpt4 key购买 nike

我正在读取数据,有些是 1 字节,有些是 2 字节,有些是 3 字节等。对于单字节

byte qtySat = r.readByte(); 

对于 2 个字节,我读作

int serialNumber = r.readUnsignedShort();

阅读一切正常,运作良好。当我转换为以十六进制格式显示时出现的问题很有趣。例如对于

Integer.toHexString(qtySat )

我得到的输出是 ffffffce 但我只想要 ce ?

然后对于 Integer.toHexString(serialNumber)我得到的输出为 A1,但我希望前导 00 A1 导致这 2 个字节的数据。我应该对 Integer.toHexString 做哪些更改?

最佳答案

Integer.toHexString(qtySat ) 为您提供传递给它的 int 值的二进制表示。如果您传递一个负数 byte,它将变成一个相同值的负数 int,这解释了您看到的所有 1 位。

在转换为十六进制字符串之前,您可以使用Integer.toHexString(qtySat & 0xff) 将除低 8 位以外的所有位设置为 0。

byte qtySat = (byte)0xce;
System.out.println (qtySat);
System.out.println (Integer.toHexString(qtySat & 0xff));

打印

-50
ce

关于java - 为什么单字节有前导 ffffff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44409773/

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