gpt4 book ai didi

python - 提取二进制头中的前 20 个字节

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:53 24 4
gpt4 key购买 nike

我正在尝试学习如何在 Python 中执行此操作,玩弄了下面的伪代码但无法想出任何值得一分钱的东西

with open(file, "rb") as f:
byte = f.read(20) # read the first 20 bytes?
while byte != "":
print f.read(1)

最后,我想得到一个具有以下功能的代码:https://stackoverflow.com/a/2538034/2080223

但我当然有兴趣学习如何到达那里,所以任何指示都会非常有用!

最佳答案

非常接近

with open(file, "rb") as f:
byte = f.read(20) # read the first 20 bytes? *Yes*

确实会读取前 20 个字节。

但是

    while byte != "":
print f.read(1) # print a single byte?

将(如您所料)读取一个字节并打印它,但它将永远打印它,因为您的循环条件将始终为真。

不清楚你想在这里做什么,但如果你只想打印一个字节,删除 while 循环就可以了:

print f.read(1)

如果你想打印单个字节直到文件结束,考虑:

while True:
byte = f.read(1)
if byte == "": break
print byte

或者,如果您要在读入 byte 的前 20 个字节中查找特定字节,则可以使用可迭代索引:

with open(file, "rb") as f:
byte = f.read(20)

print byte[0] # First byte of the 20 bytes / first byte of the file
print byte[1] # Second byte of the 20 bytes / ...
# ...

或者正如 Lucas 在评论中建议的那样,您可以遍历字符串 byte(顺便说一句,它是一个字符串,从 read() 返回):

with open(file, "rb") as f:
byte = f.read(20)

for b in byte:
print b

您可能还对字节的位置及其十六进制值感兴趣(对于 0x0a、0x0d 等值):

with open(file, "rb") as f:
byte = f.read(20)

for i,b in enumerate(byte):
print "%02d: %02x" % (i,b)

关于python - 提取二进制头中的前 20 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com