python - 在 python 中将前导零添加到十六进制值

标签 python c

我有以下十六进制值,这些值位于文件中。

ff00 928a 6275 7474 6f6e 4c69 7374 df00
84ff 002a 8869 6e70 7574 5069 6e41 0185
426e 616d 6588 4a41 4a41 4a41 4441 8672
656c 6179 73c8 4103 4103 4103 4103 ff00
2a88 696e 7075 7450 696e 4102 8542 6e61
6d65 884e 454a 4e45 4a44 4186 7265 6c61
7973 c841 0441 0441 0441 04ff 0027 8869
6e70 7574 5069 6e41 0385 426e 616d 6585
4d41 4144 4186 7265 6c61 7973 c841 0141
0141 0141 01

我想将这些十六进制值像 ff 一样分割成单个字节,并添加前导零 0x,这样我就可以将其直接放入 C 中的无符号字符数组中。

我尝试将十六进制值加载到Python中并删除所有空格,然后为每个其他字符设置一个空格,以便它们表示为单个字节。但无论如何我似乎无法更改十六进制值的布局。

这是代码

    with open ("yes.txt", "r") as myfile:
        byte=myfile.read().replace('\n', '').replace(' ','')

    [byte[i:i+2] for i in xrange(1,len(byte))]

    print byte

打印字节

有人可以帮我吗?

提前致谢

最佳答案

假设您想从文件中读取值并以新格式写回 也就是说,从内容为“ff00 928a”的文件中获取内容为“0xff 0x00 0x92 0x8a”的新文件 这段代码应该可以解决问题:

with open("vals.txt") as f:
    hexVals = f.read()

with open("out.txt", "w") as g:
    for val in hexVals.split(): 
        g.write('0x' + val[:2] + " ")
        if(len(val) > 2):
            g.write('0x' + val[2:]  + " ")

编辑
如果文件是二进制文件(当您打印 f.read() 时,您看不到您给出的值,但看到它们在 ascii 中表示的内容,您可以这样做

from binascii import hexlify
hexVals = hexlify(f.read())

看看打印它是否会为您提供一个带有数据的十六进制表示形式的字符串。 当然,如果需要,您可以使用同一模块中的 unhexlify 将其转换回来。

关于python - 在 python 中将前导零添加到十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26917175/

相关文章:

python - multiprocessing.Manager 嵌套共享对象不适用于 Queue

python - 按 tf-idf 对 TfidfVectorizer 输出进行排序(从最低到最高,反之亦然)

python - Pygame 文本换行符

c - 未使用的 char [] 变量渗入下一个变量

c - 在 C 编程语言中将结构从 32 位移动到 64 位

python - SQLAlchemy load_only 和 defer

python - Ansible Playbooks 中 IP 范围的正则表达式匹配以进行分组

c - struct sockaddr_un 与 sockaddr

c - 为什么我的 for 循环增量变化很大?

c - 优雅地退出多线程进程