我有一个二进制文件和C++代码,可以读取如下的二进制文件。你知道吗
int NumberOfWord;
FILE *f = fopen("../data/vec.bin", "rb");
fscanf(f, "%d", &NumberOfWord);
cout << NumberOfWord< <endl;
此输出为:
114042
我想用python重新实现上面的代码。你知道吗
with open("../data/vec.bin","rb") as f:
b = f.read(8)
print struct.unpack("d",b)[0]
但是这个代码不起作用。 我的输出是:
8.45476330511e-53
我的问题是:
<整数>为什么在C++中有8字节。你知道吗我从来不知道%d意味着加倍。 但是,实际上变量有一个整数类型,但是通常我们在C++中使用“%d”输出。 很奇怪。你知道吗
2)如何在python中提取实数
我想在Python代码中提取一个类似于C++代码的实数。 我该怎么做??你知道吗
也许,我误解了python中的struct模块。你知道吗
在C格式的字符串中,
%d
是十进制的缩写。你知道吗在Python中,
d
是double的缩写。你知道吗如果它是整数,则应该在
struct.unpack
调用中使用i
。你知道吗0x31 0x31 0x34 0x30 0x34 0x32 ...
或'1', '1', '4', '0', '4', '2', ...
在文本编辑器中打开它时,可以看到一行
114042
。你知道吗现在,当您尝试将if作为
i
格式的二进制文件读取时,使用文件的前4个字节,实际得到int('31313034', 16)
:825308208。我无法复制用d
格式解码它的结果,因为我猜不出文件中最后一个数字之后会出现什么。。。你知道吗如果第一行只有一个数字,很简单:只需读取一行并将其转换为int:
如果最后一个数字后面还有其他字符,则必须首先使用regex(不要忘记导入
re
)获取数值,然后将其转换为int:TL/DR:不要试图像读取包含二进制表示的文本文件那样读取它
相关问题 更多 >
编程相关推荐