如何将十六进制值字符串转换为整数列表?

jos*_*nes 9 python audio hex waveform signal-processing

我有一长串十六进制值,它们看起来都像这样:

'\x00\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00'
Run Code Online (Sandbox Code Playgroud)

实际字符串是1024帧的波形.我想将这些十六进制值转换为整数值列表,例如:

[0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0]
Run Code Online (Sandbox Code Playgroud)

如何将这些十六进制值转换为整数?

mgi*_*son 7

用途struct.unpack:

>>> import struct
>>> s = '\x00\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00'
>>> struct.unpack('11B',s)
(0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0)
Run Code Online (Sandbox Code Playgroud)

这给你一个tuple而不是一个list,但我相信你可以转换它,如果你需要.


cdh*_*wie 6

您可以ord()结合使用map():

>>> s = '\x00\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00'
>>> map(ord, s)
[0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0]
Run Code Online (Sandbox Code Playgroud)

  • @MartijnPieters 相对,当然......但是相对于脚本中发生的其他所有事情,它需要多少 CPU 时间?再次,编码和*然后*优化。 (2认同)