这段python 2.7代码首先正确打印" 1",然后抛出" ValueError:int()的无效文字,基数为10:'''&# 34 ;.
num = '\x001\x00'
print num
print int(num)
我想问题是type(num) == <type 'str'>
,所以我实际上没有#34; 1&#34;的unicode字符串,而是包含字符串的unicode表示的ascii字符串&#34; 1&#34 ;.我做对了吗?
无论如何,如何将num转换为int()将识别的格式?
答案 0 :(得分:4)
\x00
字节是这里的问题,而不是unicode与字符串值。你可以脱掉这些:
int(num.strip('\x00'))
int()
只接受包含数字的字符串,可能带有小数点,符号(+
或-
)和周围的空格。 NULL字节不是空格,即使您的终端在打印时忽略它们。
答案 1 :(得分:1)
代码显示以正确打印1
,因为您的终端会忽略您在1
之前和之后打印的二进制零。
要将字符串正确转换为数字,首先需要知道字符串的格式。例如,如果格式是使用二进制零包围数字的文本表示,则可以使用Martijn's answer中的代码对其进行转换。否则,struct
模块是此类转换的有用通用工具。