【发布时间】:2016-09-12 13:06:28
【问题描述】:
我可以在 Java 中做到这一点
final byte[] b = new byte[]{0x01, 0x02, 0x04, 0x08,
(byte)0x80, 0x40, 0x20, (byte)0xff,
(byte)0xef, 0x40, 0x30, (byte)0xfe,
0x3f, (byte)0x90, 0x44, 0x78};
而在 Python 2.x 中我可以使用
b = '\x01\x02\x04\x08\x80\x40\x20\xff\xef\x40\x30\xfe\x3f\x90\x44\x78'
Java 语法很麻烦,需要(byte) 强制转换来处理设置了最高有效位的值。
有没有更简单的方法? (除了编写一个帮助类将"01020408804020ffef4030fe3f904478" 之类的字符串转换为byte[])
【问题讨论】:
-
您可以使用
BigInteger来避免自己编写帮助程序类。 -
“除了写一个帮助类...”我怀疑不是。
-
@malbarbo -- 不是那个问题的重复,它只是想知道如何解决由于缺少演员表而导致的问题。我知道在Java中创建字节数组字面量的默认方法需要强制转换,我想知道是否有一种方法可以更紧凑地表达字节数组。
-
这个问题预先假定了上面链接问题的答案;在我看来不是骗子。不幸的是,我认为 OP 的问题(有没有更好的方法)的答案是“不”。