在Python中字符与整数的相互转换

2 投票
2 回答
29397 浏览
提问于 2025-04-18 08:14

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

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: invalid literal for int() with base 10: '\x05'

我猜 int 函数的参数是十六进制的,所以我可能需要在传递给 int 之前进行一些解码。有人能告诉我应该使用哪个解码函数,或者有没有更简单的方法来实现这个吗?

2 个回答

2
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。

9

你可能想用 ord(),而不是 int(),因为 ord()chr() 的反操作。

注意,你的代码只能处理长度不超过 255 的情况,因为这是 chr()ord() 支持的最大值。

撰写回答