【问题标题】:Converting character to int and vice versa in Python在Python中将字符转换为int,反之亦然
【发布时间】:2014-07-22 02:05:27
【问题描述】:

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

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 之前进行一些解码。谁能给我一个关于从解码中使用什么函数的指针,或者是否有更简单的方法来完成这个?

【问题讨论】:

标签: python string encoding


【解决方案1】:

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

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

【讨论】:

  • 谢谢! ord() 在 2.6 中可用吗?
【解决方案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

【讨论】:

  • 字母解决方案很有用。如果他们认为 A 为 0 到 Z 为 25,您可以- 65 istead。
猜你喜欢
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 2021-05-10
  • 2015-02-16
  • 2020-10-24
相关资源
最近更新 更多