gpt4 book ai didi

java - 如何在Java中存储无符号字节(数组)以对其进行位操作?

转载 作者:行者123 更新时间:2023-12-01 07:26:11 25 4
gpt4 key购买 nike

我需要在 Java 中存储(一个数组)无符号字节来对它们进行位操作。我想做标准的位操作。 shift ((sVal>>8) & 0xff);,或 |、与 & 以及比较。以及类似 w |= ~0xff;我如何存储它们?

字节 b = 0x96;//值为150

我收到编译错误:类型不匹配:无法从 int 转换为 byte

所以我投了它

字节 b =(强制转换)0x96;

现在我看到该值已更改为 -106。

如果我存储为字符,则会将其提升为 2 个字节。

我应该如何在 Java 中将值存储为无符号字节,以便我可以对它们进行位操作?

使用int会出现问题吗?

最佳答案

Java 中没有无符号的原始数据类型——字节是有符号的。您需要找出其他方式来表示数据,具体取决于您想要执行的操作。

编辑:

人们给了你很多建议和解释,但你没有解释太多关于你的情况的要求(“很多而且很快”没有帮助)。但我注意到你原来的帖子还有一些其他的事情。

你说

byte b = (cast) 0x96;

Now I see the value has changed to -106.

我想知道您是否理解字节的值根本没有改变。该字节仍然是十六进制的96,如果你以十六进制打印出来你可以看到。 -106 只是十六进制 96 表示的十进制数。

如果您想做的只是位操作,那么您仍然可以将其全部存储为字节。仅当您还需要算术运算(加、减、乘、除、大于、小于)时,您才需要担心字节的有符号性质。

关于java - 如何在Java中存储无符号字节(数组)以对其进行位操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376426/

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