如何将代理对转换为十六进制,在Python中反之亦然?



如何将代理字符对转换为十六进制?

我发现使用hex()ord()适用于具有单个代码点的字符,例如"😀"等表情符号。例如:

print(hex(ord("😀")))
# '0x1f600'

同样,使用chr()int()可以从十六进制中获取字符:

print(chr(int(0x1f600)))
# '😀'

但是,只要我使用代理符对,比如"👩🏻"这样的表情符号,代码就会抛出一个错误:

print(hex(ord("👩🏻")))
TypeError: ord() expected a character, but string of length 2 found

如何解决这个问题,如何将十六进制转换回字符?

由于没有指定确切的输出格式,那么:

def hexify(s):
return s.encode('utf-32-be').hex(sep=' ', bytes_per_sep=4)
def unhexify(s):
return bytes.fromhex(s).decode('utf-32-be')
s = hexify('👩🏻')
print(s)
print(unhexify(s))

输出:

0001f469 0001f3fb
👩🏻

或类似于您的原始代码:

def hexify(s):
return [hex(ord(c)) for c in s]
def unhexify(L):
return ''.join([chr(int(n,16)) for n in L])
s = hexify('👩🏻')
print(s)
print(unhexify(s))

输出:

['0x1f469', '0x1f3fb']
👩🏻

相关内容

  • 没有找到相关文章

最新更新