我可以将Unicode字符串转换为字节数组吗?

5
我希望能将一个简单的Unicode字符串转换为字节数组,以便我可以将每个字符引用为int。这是否可行?
我想将一个字符串u"Hello World"转换成UTF-8编码,并得到类似于以下格式的结果:`
[0x01, 0x02, ..., 0x02]

我该如何高效地完成这个任务?

3
你的意思是将每个都称为一个整数吗? - mmmmmm
2个回答

13

如果你正在寻找Python的bytearray

my_array = bytearray(u"hello, world", encoding="utf-8")

跟着它 output = []; for i in ba: output.add(hex(i)) ;; print ", ".join(output)。为胜利而战! - Naftuli Kay
2
有一种更简单的方法可以实现这个功能:print ", ".join(map(hex, ba)) - David Robinson
一行代码打印字节字符串,不带0x分隔符:return "".join(map(hex, bytearray(in_string, encoding="utf-8"))).replace('0x','') - Nick Sweeting

8
你的问题可能有两种意思:一是使用UTF8等进行Unicode字符串编码并获取结果字节列表,二是获取Unicode代码点列表。
在前一种情况下:
list_of_bytes = map(ord, my_unicode_string.encode('utf8'))

在后一种情况下:
list_of_code_points = map(ord, my_unicode_string)

1
鉴于某些(天哪,这是一个轻描淡写的说法)Unicode字符并没有在[0..255]范围内的代码点,前者似乎更有可能。 - user395760
前者会为您提供值的编码版本,因此对于字符u'誠',您将得到[232, 170, 160],而后者将为您提供完整的Unicode点值(8AA0 -> 35488)。根据@TK Kocheran想要实现的目标,这两种方法都可以很好地工作。 - Makoto
我正在寻找第一个案例,谢谢!我是否可以将hex()映射到每个值,以便我在数组中拥有它们的十六进制字符串? - Naftuli Kay
2
使用lambda x: hex(ord(x))代替ord - dhwthompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接