gpt4 book ai didi

python - 将字符串的十六进制值转换为具有十六进制值的 Ascii 字符

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:24 24 4
gpt4 key购买 nike

特别是在Python 2.4中,不幸的是它很旧,我需要将长度转换为十六进制值。长度为 1 时为“\x00\x01”,而长度为 65535 时为“\xFF\xFF”。

import struct

hexdict = {'0':'\x00\x00', '1':'\x00\x01', '2':'\x00\x02', '3':'\x00\x03', '4':'\x00\x04', '5':'\x00\x05', '6':'\x00\x06', '7':'\x00\x07', '8':'\x00\x08', '9':'\x00\x09', 'a':'\x00\x0a', 'b':'\x00\x0b', 'c':'\x00\x0c', 'd':'\x00\x0d', 'e':'\x00\x0e', 'f':'\x00\x0f'}



def convert(int_value): # Not in original request
encoded = format(int_value, 'x')
length = len(encoded)
encoded = encoded.zfill(length+length%2)
retval = encoded.decode('hex')
if x < 256:
retval = '\x00' + retval
return retval



for x in range(16):
print hexdict[str(hex(x)[-1])] # Original, terrible method
print convert(x) # Slightly better method
print struct.pack(">H", x) # Best method

除了像上面这样的字典之外,如何将任意数字 <= 65535 转换为这个十六进制字符串表示形式,填充 2 个字节的空间?

感谢 Linuxios 和我在等待答案时找到的答案,我找到了三种方法来做到这一点。显然,Linuxios 的答案是最好的,除非由于某种原因不需要导入结构。

最佳答案

使用Python的内置struct封装:

import struct
struct.pack(">H", x)

例如,struct.pack(">H", 1) 给出 '\x00\x01'struct.pack(">H", 65535) 给出 '\xff\xff'

关于python - 将字符串的十六进制值转换为具有十六进制值的 Ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com