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

在Python中将字符转换为int,反之亦然,python,string,encoding,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

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

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:基数为10的int()的文本无效:'\x05'


我假设int的参数是十六进制的,所以在传递给int之前,我可能需要进行一些解码。有人能给我一个指针,指示从解码中使用什么函数,或者是否有更简单的方法来实现这一点吗?

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

请注意,您的代码只适用于长度不超过
255
的情况,因为这是最大的
chr()
ord()
支持

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
results 1因为我们知道
ord('A')
是65

谢谢!ord()在2.6中可用吗?字母表解决方案的可能副本很有用。如果他们认为A为0到Z为25,则可以<代码> -65 < /代码> ISTED。