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

2024-04-29 03:38:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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之前做一些解码。有人能给我一个指针,告诉我从decode使用什么函数,或者有什么更简单的方法来实现这个目标吗?


Tags: 数据代码test应用程序stringlen数据包perform
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

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

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

相关问题 更多 >