[英]Is there a faster way to convert big file from hexa to binary and binary to int?
[英]Converting Hexa to Binary from list
我试图打开带有值及其六进制数据的列表,并将每一行转换为仅二进制值(带有小掩码)。
例如在我的 txt 文件中,我有:
DATA0 = 0x413e960d
DATA1 = 0x1c1c81c7
DATA2 = 0xa0000000
(32 Bits)
我希望 output 是:
000000000000000001000001001111101001011000001101
000000000000000000011100000111001000000111000111
000000000000000010100000000000000000000000000000
(48 Bits)
我想将这些值写入一个新文件中,由于某种原因,在我的代码中,它跳过了第一次值转换,你能帮我理解为什么吗?
代码:
with open(input,'r') as r, open(output,'w') as w:
#lines = r.readlines()
for line in r:
# if not line.startswith('#'):
if line.startswith('DATA'):
#print(line)
new_line = line.rsplit("=")[1]
new_line.strip()
w.writelines(new_line)
w.writelines(new_line + str( bin(int(new_line, 16))[2:] ).zfill(48))
我也尝试过这种转换:(最后一行)
w.writelines(new_line + str('{:048b}'.format(int(new_line.strip(), 16))))
你用不一致的换行符写了两次你的十六进制值,但总的来说,我看到所有值都被转换了。 尝试简化您的代码:
with open("file.txt",'r') as r, open("output.txt",'w') as w:
for line in r:
if line.startswith('DATA'):
hex_val = line.rsplit("=")[1].strip()
w.writelines(f"{hex_val}:\n{bin(int(hex_val, 16))[2:].zfill(48)}\n\n")
Output:
0x413e960d:
000000000000000001000001001111101001011000001101
0x1c1c81c7:
000000000000000000011100000111001000000111000111
0xa0000000:
000000000000000010100000000000000000000000000000
您忘记从line
中删除"\n"
with open("input.txt",'r') as r, open("output.txt",'w') as w:
for line in r:
line_without_white_characters_including_next_line = ''.join(line.split()) # removes whitespaces and \n
if line_without_white_characters_including_next_line.startswith('DATA'):
new_line = line_without_white_characters_including_next_line.split("=")[1]
w.writelines(str( bin(int(new_line, 16))[2:] ).zfill(48))
w.writelines("\n") # need to write next line so values are not next to each other
我的 output:
000000000000000001000001001111101001011000001101
000000000000000000011100000111001000000111000111
000000000000000010100000000000000000000000000000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.