python - 在 Python 中,将文件的 block 读取为十进制数字

标签 python file decimal bit-manipulation

我的输入文件可以是任意的,所以我将使用

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/

相关文章:

java - 将 String 数组转换为 int 值并将其存储在 int 数组中

algorithm - 将小数转换为浮点二进制表示

Python:将列表保存在不带引号的文件中?

python - 如何仅抓取多个div内的文本内容

Python 请求不适用于 https 代理

c# - 将计算出的 double 转换为十进制可以纠正精度误差吗?

c++ - C++ 中的小数位和 Pow 函数

python - 使用pymysql将csv上传到数据库

c - 使用双指针和 malloc 读取文件

python - 如何从最后一个位置重复读取文件