如何转换从文本文件中读取的整数并存储为具有16位整数的二进制文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何转换从文本文件中读取的整数并存储为具有16位整数的二进制文件?相关的知识,希望对你有一定的参考价值。

尝试从文本文件中读取十进制值转换为16位二进制文​​件并转换为二进制文件。

示例输入文件

120
300
-250
13
-120

码:

def decimaltoBinary(filename,writefile):
    file = filename
    print(file)
    file_write = open(writefile,'wb')
    file_read = open(file, 'rb')
    for line in file_read:
        value = int(line)
        if value < 0:
            binary_value = bin((2**16) - abs(value))[2:].zfill(16)
            file_write.write(binary_value + "
")
        else:
            binary_value = bin(int(value))[2:].zfill(16)
            file_write.write(binary_value + "
")
    file_write.close()

decimaltoBinary(input_file.text,output_file.bin)

希望将转换后的十进制值写入二进制文件..非常感谢任何帮助

答案

您可以使用the struct module

data = [120,300,-250,13,-120] # you seem to have the reading part covered already
                              # using a list as data input for demo purposes
import struct

with open("f.bin","wb") as f: 
    for d in data:
        f.write(struct.pack('h', d)) # 2 byte integer aka short

with open("f.bin","rb") as f:
    print(f.read())  # b'xx00,x01x06xff
x00x88xff'

您只需指定'h'即可获得短(2字节整数)打包。

对于奇怪的打印输出blame python - 它用较短的正常字符替换“已知”xXX代码 - f.e. ',' => 0x2c => x0d等。

以上是关于如何转换从文本文件中读取的整数并存储为具有16位整数的二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

读取二进制文件碎片并转换为具有内存效率的整数

C++ 混乱。从文本文件中读取整数。转换为 ASCII

如何从 C++ 中的文本文件中逐行读取整数? [复制]

从两个 8 位整数计算 16 位整数值?

读取存储在文本文件中的字典并转换为熊猫数据框[重复]

如何从单个文本文件中同时打印字符串和整数?