擅长:python、mysql、java
<>你可以用这个C++(或相当的C)行,^ {< CD1>}来正确读取文件,我假设你的文件包含114042的文本表示。所以它包含字节</p>
<p><code>0x31 0x31 0x34 0x30 0x34 0x32 ...</code>或<code>'1', '1', '4', '0', '4', '2', ...</code></p>
<p>在文本编辑器中打开它时,可以看到一行<code>114042</code>。你知道吗</p>
<p>现在,当您尝试将if作为<code>i</code>格式的二进制文件读取时,使用文件的前4个字节,实际得到<code>int('31313034', 16)</code>:825308208。我无法复制用<code>d</code>格式解码它的结果,因为我猜不出文件中最后一个数字之后会出现什么。。。你知道吗</p>
<p>如果第一行只有一个数字,很简单:只需读取一行并将其转换为int:</p>
<pre><code>with open("../data/vec.bin","rb") as f:
print int(f.readline())
</code></pre>
<p>如果最后一个数字后面还有其他字符,则必须首先使用regex(不要忘记导入<code>re</code>)获取数值,然后将其转换为int:</p>
<pre><code>with open("../data/vec.bin","rb") as f:
line = f.readline()
m = re.match(t'\s*\d*', line)
print(int(m.group(0)))
</code></pre>
<p>TL/DR:不要试图像读取包含二进制表示的文本文件那样读取它</p>