Python 像 PHP 一样解压

Python unpack like in PHP

PHP我会这样做:

$res = unpack('C*', "string");

$res 变量将是一个大小为 6 的数组:

Array ( [1] => 115 [2] => 116 [3] => 114 [4] => 105 [5] => 110 [6] => 103 ) 

我想在 Python 中使用同样的技巧。我试过这个:

>>> from struct import unpack
>>> unpack("s","string")

但在这种情况下我得到一个错误:

struct.error: unpack requires a string argument of length 1

我只是想知道 - 如果 "s" 格式代表字符串,为什么长度为 1?我怎样才能实现同样的事情,比如 PHP?

那是因为struct.unpack格式s表示"a string"。默认情况下它是一个 1 个字符的字符串,否则你必须指定长度,例如10s 对于 10 个字符的字符串。

无论如何,Python 字符串已经表现得像不可变的字符数组,因此您可以执行 s[3] 并获得第 4 个(从零开始)字符。如果你需要明确地将字符串分解成字典(类似于 PHP 关联数组),你可以这样做:

 s = dict(enumerate("string"))

但我强烈建议不要这样做。