我使用Java将double转换为字节数组。像这样:
public static byte[] toByteArray(double value) {
byte[] bytes = new byte[8];
ByteBuffer.wrap(bytes).putDouble(value);
return bytes;
}
现在,我想把这个字节数组转换回一个double。在Java中,我会这样做:
public static double toDouble(byte[] bytes) {
return ByteBuffer.wrap(bytes).getDouble();
}
现在,我如何用Python编写toDouble()
方法?
Python有^{} module 将字节转换回
float
值:这里
'd'
表示需要一个双精度值(在本机endianess中,为8字节)。有关更多选项,包括指定endianess,请参阅模块文档。另一种选择是将} object ;如果您有一个相同的双倍序列,则可以使用此选项:
bytes
值转换为^{其中每8个字节被解释为一个双精度值,使
doubles_sequence
成为一个双精度序列,可通过索引寻址。为了支持不同的endianess,可以用doubles_sequence.byteswap()
交换字节顺序。您需要^{} 模块:
pack
方法在Python 3.x中为您提供一个bytes
,在Python 2.x中为您提供一个str
。这种类型不像Javabyte[]
那样是可变的,在2.x中,它还像一个单字符串序列,而不是0-255之间的数字序列。如果需要修复其中任何一个,只需将其转换为bytearray
。另外,请注意,在Java和Python中,您可能希望更经常地指定显式的endianness,特别是当您计划将字节保存到文件或通过网络发送它们时。有关详细信息,请参见Format Strings。
所以:
相关问题 更多 >
编程相关推荐