Python 像 PHP 一样解压

Jac*_*ian -2 python unpack

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 中一样?

Ste*_*ppo 5

那是因为struct.unpack格式s意味着“字符串”。默认情况下,它是 1 个字符的字符串,否则您必须指定长度,例如10s10 个字符的字符串。

无论如何,Python 字符串的行为已经像不可变的字符数组一样,因此您可以s[3]获取第 4 个(从零开始的)字符。如果您需要将字符串显式分解为字典(类似于 PHP 关联数组),您可以这样做:

 s = dict(enumerate("string"))
Run Code Online (Sandbox Code Playgroud)

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