在Python中将字符转换为int,反之亦然

时间:2014-06-02 01:48:59

标签: python string encoding

我有一个外部应用程序,它在数据开头追加数据包的长度。类似下面的代码:

x = "ABCDE"
x_len = len(x)
y = "GHIJK"
y_len = len(y)
test_string = chr(x_len) + x + chr(y_len) + y
#TODO:perform base64 encoding

在代码的客户端,我需要能够提取x_len和y_len并按比例读取x和y。

#TODO:perform base64 decoding
x_len = int(test_string[0])
x = test_string[:x_len]

我收到以下错误:     ValueError:int()的基数为10的无效文字:'\ x05'

我假设int的参数是十六进制的,所以我需要在传递给int之前做一些解码。有人可以给我一个关于在解码时使用什么功能的指针,或者是否有更简单的方法来完成这个?

2 个答案:

答案 0 :(得分:8)

您可能需要ord(),而不是int(),因为ord()chr()的操作相反。

请注意,您的代码仅适用于255的长度,因为这是最大chr()ord()支持。

答案 1 :(得分:1)

t="ABCDE"

print reduce(lambda x,y:x+y,[ord(i) for i in t])

#output 335

ord的用法:用于将字符转换为ascii值..

在某些情况下只针对他们认为的字母A:1 --- Z:26在这种情况下使用

ord('A')-64结果1,因为我们知道ord('A')是65

相关问题