Java 使用公式int unsignedByte=signedByte>;=0 ? signedByte:256+;有符号字节;
有人告诉我,要在java中将有符号字节转换为无符号字节,我们可以使用以下公式Java 使用公式int unsignedByte=signedByte>;=0 ? signedByte:256+;有符号字节;,java,byte,unsigned,sign,Java,Byte,Unsigned,Sign,有人告诉我,要在java中将有符号字节转换为无符号字节,我们可以使用以下公式 int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte; 但例如,如果我有一个signedByte值1(字节值范围从-128到127),我使用这个公式,因此1>=0的计算结果为true,因此使用第一个表达式,结果是1+1,等于2。但我希望在unsignedByte中用129表示相同的数字 是我的理解有问题还是这个公式有问题 如能提供实
int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte;
但例如,如果我有一个signedByte值1(字节值范围从-128到127),我使用这个公式,因此1>=0
的计算结果为true
,因此使用第一个表达式,结果是1+1
,等于2
。但我希望在unsignedByte中用129表示相同的数字
是我的理解有问题还是这个公式有问题
如能提供实际有符号和无符号值的示例,将不胜感激 您可以像这样使用按位AND运算符:
int unsignedByte = signedByte&255;
从本质上说,这增加了允许的空间,从而将指示其是否为负值的位更改为更高的位(索引为0时为31)
)您可以像这样使用按位AND运算符:
int unsignedByte = signedByte&255;
从本质上说,这增加了允许的空间,从而将指示其是否为负值的位更改为更高的位(索引为0时为31)
)您误解了三元运算符:
int unsignedByte =
signedByte >= 0 ?
signedByte // you get this
: 256 + signedByte; // or this
而不是
int unsignedByte =
(signedByte >= 0 ? signedByte : 256)
+ signedByte;
您误解了三元运算符:
int unsignedByte =
signedByte >= 0 ?
signedByte // you get this
: 256 + signedByte; // or this
而不是
int unsignedByte =
(signedByte >= 0 ? signedByte : 256)
+ signedByte;
因此,如果我有一个值为1的有符号字节,signedByte>=0计算为true,int unsignedByte=1?但我认为int unsignedByte应该等于129?“unsignedByte=1?但我认为int unsignedByte应该等于129?”不,那是错误的。请参阅:为了安全起见,您可以始终将
256+带符号字节
放在括号中,从而消除所有可能的怀疑。@America船长,当>=0
时,您要求输入值本身,因此您得到了1
。“Unsigned”表示“肯定”,是吗?而且1
是正的,是吗?所以1
的“无符号”值是<代码>1,是吗?如果我有一个值为1的有符号字节,signedByte>=0计算为true,int unsignedByte=1?但我认为int unsignedByte应该等于129?“unsignedByte=1?但我认为int unsignedByte应该等于129?”不,那是错误的。请参阅:为了安全起见,您可以始终将256+带符号字节
放在括号中,从而消除所有可能的怀疑。@America船长,当>=0
时,您要求输入值本身,因此您得到了1
。“Unsigned”表示“肯定”,是吗?而且1
是正的,是吗?所以1
的“无符号”值是<代码>1,是吗?