python结构。从Java中解包
我有以下Python指令,我想用Java理解和翻译
values = struct.unpack_from('>%dL' % 96, input_content, 0)
什么是>;%什么意思? 我检查了pythonhttp://docs.python.org/library/struct.html中的文档,但没有检查百分比。 我是否应该将每个返回值看作java中的一个字节,并将其转换为double或double?p>
谢谢你的帮助
你可以在下面搜索框中键入要查询的问题!
我有以下Python指令,我想用Java理解和翻译
values = struct.unpack_from('>%dL' % 96, input_content, 0)
什么是>;%什么意思? 我检查了pythonhttp://docs.python.org/library/struct.html中的文档,但没有检查百分比。 我是否应该将每个返回值看作java中的一个字节,并将其转换为double或double?p>
谢谢你的帮助
# 1 楼答案
如果我用Java写同样的东西,它可能是这样的:
不同的是,python代码使用的是已经加载的字节
非常感谢John Machin和Matti的解释
# 2 楼答案
Python交互式提示是您的朋友:
所以
相当于
而且
struct
文档应该告诉您‘>;96L'表示96个双端无符号32位整数我无法想象原作者为什么以如此模糊的方式写这篇文章。如果项目的数量是可变的,则有必要使用这样的技术来构建格式,但如果项目的数量是已知常量,则不必使用这种技术
# 3 楼答案
%d
是一个类似于C
中的Python字符串格式化程序。它所说的是用结束引号后面的东西代替格式化程序,在本例中96
代替%d
。%d
指定有符号整数十进制'>%dL'%96
是对struct.unpack
的一条指令,说明它需要解包的是一个大端无符号long,其中包含一个无符号整数十进制。在'>%dL'
被传递给unpack
之前,字符串格式化程序被解析,并且'>%dL'
变成'>96L'
。请看一下'struct'中的格式字符串部分。解包文档http://docs.python.org/library/stdtypes.html#string-formatting
http://docs.python.org/library/struct.html?highlight=struct.unpack#format-strings