gpt4 book ai didi

java - 具有最高位设置的位文字字节

转载 作者:行者123 更新时间:2023-11-30 02:56:12 25 4
gpt4 key购买 nike

我正在与一个需要大量位级别输入的遗留系统进行交互。它要求我传入带有特定位设置的八位位组(实际上是字节)。

为了保持可读性,我声明了一些如下标志:

private static final byte FLAG_A   = 0b00010000;
private static final byte FLAG_B = 0b00100000;
private static final byte FLAG_C = 0b00011000;

效果很好。

奇怪的是,当我设置最高位(如下所示)时,编译器开始提示找到了一个 int。我可以把它扔掉,但这对我来说似乎很奇怪。它仍然是 8 位,所以我希望它适合一个字节(即使两个补码表示法导致它被解释为负数,这对我来说没有任何影响)

private static final byte FLAG_D   = 0b10000000;

知道发生了什么吗?

最佳答案

0bxxxx 表示法用于整数的按位表示,如果合适的话可以将其转换为字节,但这不是特殊的仅字节表示法。 0b1000000 是正+128,超出了字节的容纳范围。您需要执行类似 -0b111111 (-127) 的操作才能实现字节模式 0b1000000,但最好进行显式强制转换。你真正需要的是无符号字节类型,这是java所缺乏的。

关于java - 具有最高位设置的位文字字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37155592/

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