Python3.8 将用户输入数值以十六进制格式写入二进制文件问题咨询
问题解答
1. 原有代码的错误点
- 类型使用错误:
hex(intval)的返回值是十六进制格式的字符串(比如输入10返回'0xa'),并非可直接转二进制的数值类型。 - 参数传递错误:
bytes(('num',))中将变量名num作为字符串'num'传入,实际传入的是固定字符串而非变量存储的数值;同时bytes()构造方法不支持直接传入字符串生成二进制内容,触发类型报错。 - 冗余代码:
with上下文管理器会在代码块执行结束后自动关闭文件,不需要额外调用fp.close()。
2. 大数值2字节写入实现方案
可以直接使用to_bytes()实现需求,这是当前场景下最简单的方案:
直接对输入转换得到的整数intval调用to_bytes()方法,指定字节长度为2、字节序(大端big/小端little根据业务需求选择即可),就能直接生成符合要求的二进制内容写入文件。如果后续需要存储更大的数值,只需要调整to_bytes()的第一个参数(字节长度)即可,不需要手动拆分字节。
修复后的代码示例:
intval = int(input()) # 打印十六进制格式用于调试 print(hex(intval)) with open('hexFile.iotabin', 'wb') as fp: # 示例用小端字节序,可根据需求替换为byteorder='big' fp.write(intval.to_bytes(2, byteorder='little'))
内容的提问来源于stack exchange,提问作者sandeep
相关产品推荐
相关产品推荐

