Python - 将字符串“0xDE 0xAD 0xBE 0xEF”解析为字节数组
有很多示例代码可以在几行代码中完成此操作。在Python 3.2中有一个库可以在一次调用中做到这一点?如果不是,那么最小代码是做什么的?Python - 将字符串“0xDE 0xAD 0xBE 0xEF”解析为字节数组
我很高兴能得到任何类似列表(可转位和迭代器)结果的结果...
编辑:你们是快!我喜欢这一个:
byte_collection = bytes(int(x, 16) for x in some_string.split())
3>> bytes(int(x, 16) for x in '0xDE 0xAD 0xBE 0xEF'.split())
b'\xde\xad\xbe\xef'
这不适用于我的2.7.2 Python。 – 2012-03-05 03:24:56
@Corey:没有人说这是应该的。 – 2012-03-05 03:25:19
只是为了寻找那些可能会发现这一点的人。 – 2012-03-05 03:28:33
如果你想把它当作一个整数列表,这应该工作,假设s
包含您的字符串:
[int(piece, 16) for piece in s.split()]
如果你想把它当作一个字符串,则可以使用这样的:
''.join(chr(int(piece, 16)) for piece in s.split())
的整数列表:
list_of_ints = [int(x, 16) for x in inputstr.split()]
字节的字符串(ASCII字符):
string_of_bytes = ''.join(chr(int(x, 16)) for x in inputstr.split())
在Python 3:
string_of_bytes = bytes(int(x, 16) for x in inputstr.split())
int()'理解'0x'无需将其去掉 – 2012-03-05 06:03:26
@gnibbler好点。 – Amber 2012-03-05 06:08:40
为什么会出现有问题 “的几行代码?”鉴于您可能会将此代码锁定在某个函数中,解决方案的一行还是很多很重要吗? – 2012-03-05 03:17:32
接受的解决方案不需要定义我自己的方法来隐藏如何去做。在应用程序代码中不必要地包装标准python库是我的宠儿。这只是没有必要。我喜欢下面的解决方案,我接受并认为没有理由包装它。 – 2012-03-06 00:41:48