我的输入文件可以是任意的,所以我将使用
f = open("in-file", 'rb')
block 大小约为 4K 字节,因此我将使用
f.read(4096)
我想要做的是从文件中逐 block 读取 block 。 此外,由于 chunk 实际上是一个 $2^15$ 位(4KB)的序列,因此在读取 chunk 时,我需要将其转换为十进制值以进行进一步计算。
例如,如果第一个 block 的形式为 0000...10,我想要的是让另一个变量保留相应的十进制值,例如 x=2。
来自Convert string to list of bits and viceversa我知道它的代码可以帮助我逐 block 读取。
def tobits(s):
result = []
for c in s:
bits = bin(ord(c))[2:]
bits = '00000000'[len(bits):] + bits
result.extend([int(b) for b in bits])
return result
但是,我不知道如何将输出列表转换为十进制值。有人能给我一些示例代码吗?谢谢。
最佳答案
通过引用http://code.activestate.com/recipes/510399-byte-to-hex-and-hex-to-byte-string-conversion/我发现下面的代码可能会运行得更快,因为它似乎不涉及算术。
def ByteToHex( byteStr ):
return ''.join( [ "%02X " % ord( x ) for x in byteStr ] ).strip()
因此,例如将 2 字节 block 读取为十进制数的任务可以通过以下代码完成:
in_file=open("in-file", "rb")
piece = in_file.read(2)
a=ByteToHex(piece)
a=int(a,16)
关于python - 在 Python 中,将文件的 block 读取为十进制数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384287/