如何在Python中向文件写入单个十六进制值?

如何在Python中向文件写入单个十六进制值?,python,file-io,hex,Python,File Io,Hex,我正在尝试将一个十六进制值写入一个文件,例如“F”: a = int('F', 16) f.write(chr(a)) 但是,此代码段为我提供了带有0F的文件。我只想在我的文件中有一个十六进制F。我知道这是因为一个字符由一个字节表示,有没有办法不使用pad直接写入十六进制值?使用: 它将把它写为F: >>> "{:X}".format(a) 'F' 您可以使用struct模块将原始数据写入文件。这将向文件写入一个字节 open('file','wb').write(st

我正在尝试将一个十六进制值写入一个文件,例如“F”:

a = int('F', 16)
f.write(chr(a))
但是,此代码段为我提供了带有
0F
的文件。我只想在我的文件中有一个十六进制
F
。我知道这是因为一个字符由一个字节表示,有没有办法不使用pad直接写入十六进制值?

使用:

它将把它写为
F

 >>> "{:X}".format(a)
 'F'

您可以使用
struct
模块将原始数据写入文件。这将向文件写入一个字节

open('file','wb').write(struct.pack('b', 0xf))

在大多数现代操作系统上,您尝试执行的操作是不可能的。通用计算平台能够处理的最小数据单元是一个字节

检查此项以了解更多详细信息,其中说明:
“从历史上看,字节是计算机中用于编码单个文本字符的位数,因此它是许多计算机体系结构中最小的可寻址内存单元。”

您是在文件中寻找ASCII十六进制值(0x70)还是二进制值0xF?实际上,这只给出了字符串“F”,我想要的是原始文件中的0xF值。但在你的问题“我只想要文件中的单个十六进制F”中,不是吗?这与
F.write('F')相同,并写入十六进制值
0x46`。我仍然很困惑。。。您想要3个字符“0xF”还是一个二进制字节?由于字节是8位,十六进制F只有4位,
0xF
0x0F
是同一回事。@丰度-字节是PC和大多数标准硬件上最小的可寻址或可写实体
0xF
是一个4位半字节,但您始终必须处理8位字节。答案将
0x0f
写入文件是的,因此问题仍然是,您希望写入什么??
0x0f
0xF
都是
00001111
作为二进制字节
0x0f
只是一种人类可读的字节形式。。。当然
00001111
太。。。
open('file','wb').write(struct.pack('b', 0xf))