繁体   English   中英

将字符串解释为打包的二进制数据,Python与Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM