Python:将存储为字符串的十六进制值转换为十六进制d

2024-06-16 14:55:53 发布

您现在位置:Python中文网/ 问答频道 /正文

(找到答案。关闭主题)

我正在尝试将存储为字符串的十六进制值转换为十六进制数据。在

我有:

data_input = 'AB688FB2509AA9D85C239B5DE16DD557D6477DEC23AF86F2AABD6D3B3E278FF9'

我需要:

^{pr2}$

我在尝试data_input.decode('hex')binascii.unhexlify(data_input),但是它们都返回了:

"\xabh\x8f\xb2P\x9a\xa9\xd8\\#\x9b]\xe1m\xd5W\xd6G}\xec#\xaf\x86\xf2\xaa\xbdm;>'\x8f\xf9"

我应该写什么来接收'\xFF'视图中的所有字节?在


更新

我需要在'\xFF'视图中表示来将此数据写入文件(我用'wb'打开文件),如下所示:

«hЏІPљ©Ш\#›]бmХWЦG}м#Ї†тЄЅm;>'Џщ

更新2

抱歉打扰了。答案一直在我的眼皮底下:

data_output = data_input.decode('hex')
write_file(filename, data_output)  #just opens a file 'wb', ant write a data in it

结果和我需要的一样


Tags: 文件数据答案视图主题inputoutputdata
3条回答
>>> int('0x10AFCC', 16)
1093580
>>> hex(1093580)
'0x10afcc'

所以在字符串前面加上“0x”,然后执行上述操作

我喜欢用re.findall将字符串切成固定宽度的块

print '\\x' + '\\x'.join(re.findall('.{2}', data_input))

如果要实际将字符串转换为整数列表,可以这样做:

^{pr2}$

这是一个效率低下的解决方案,但总有:

flag = True
data_output = ''
for char in data_input:
    if flag:
        buffer = char
        flag = False
    else:
        data_output = data_output + '\\x' + buffer + char
        flag = True

希望最后一个编辑:谁知道我会在这个简单的循环中用这么多不同的方式搞砸?现在应该跑了。。。在

相关问题 更多 >