[英]getting the binary data represented by the hexadecimal string back in java vs python
[英]Interpret strings as packed binary data, Python vs Java
我在用Java和Python中的二进制文件来翻译程序时有点挣扎
在python中,当我执行以下命令时,
>>> print ord(pack('>H', 32809)[0])
128
>>> print ord(pack('>H', 32809)[1])
41
在Java中,当我执行以下命令时,我希望得到相同的结果,但是它不存在:
bsh % print ((byte)((32809 & 0xFF00) >> 8));
-128
bsh % print ((byte)(32809 & 0x00FF));
41
有人可以解释一下为什么Java中128为负数吗? 非常感谢。
Java中的字节是一种有符号的数据类型-是的,我从来不明白他们为什么这么做。 您将需要使用short(好吧,因为所有位op都以int方式使用,实际上只是使用int),而忽略了更高的8bit(否则,符号扩展将是一个问题)
System.out.println(((short) ((32809 & 0xFF00) >> 8)) & 0xFF);
有符号字节的范围为-128..127,因此(127 + 1)== -128
Java中将没有未签名的类型。 您可以考虑将其强制转换为short或int。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.