在PHP我会这样做:
$res = unpack('C*', "string");
Run Code Online (Sandbox Code Playgroud)
变量$res将是一个大小为 6 的数组:
Array ( [1] => 115 [2] => 116 [3] => 114 [4] => 105 [5] => 110 [6] => 103 )
Run Code Online (Sandbox Code Playgroud)
我想在 中做同样的事情Python。我试过这个:
>>> from struct import unpack
>>> unpack("s","string")
Run Code Online (Sandbox Code Playgroud)
但在这种情况下我得到一个错误:
struct.error: unpack requires a string argument of length 1
Run Code Online (Sandbox Code Playgroud)
我只是想知道 - 如果“s”格式代表字符串,为什么长度为 1?我怎样才能实现同样的事情,就像在 PHP 中一样?
那是因为struct.unpack格式s意味着“字符串”。默认情况下,它是 1 个字符的字符串,否则您必须指定长度,例如10s10 个字符的字符串。
无论如何,Python 字符串的行为已经像不可变的字符数组一样,因此您可以s[3]获取第 4 个(从零开始的)字符。如果您需要将字符串显式分解为字典(类似于 PHP 关联数组),您可以这样做:
s = dict(enumerate("string"))
Run Code Online (Sandbox Code Playgroud)
但我强烈建议不要这样做。