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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23986337/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 03:47:04  来源:igfitidea点击:

Converting character to int and vice versa in Python

pythonstringencoding

提问by as3rdaccount

I have an external app that appends the length of the packet at the start of the data. Something like the following code:

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

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

In the client side of the code I need to be able to extract x_len and y_len and read x and y accrodingly.

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

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

I get the following error: ValueError: invalid literal for int() with base 10: '\x05'

我收到以下错误: ValueError: invalid literal for int() with base 10: '\x05'

I assume the argument of int is in hex so I probbaly need to do some decoding before passing to the int. Can someone give me a pointer as to what function to use from decode or if there is any easier way to accomplish this?

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

采纳答案by Amber

You probably want ord(), not int(), since ord()is the opposite operation from chr().

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

Note that your code will only work for lengths up to 255since that is the maximum chr()and ord()support.

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

回答by sundar nataraj

t="ABCDE"

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

#output 335

usage of ord: it is used to convert character to its ascii values ..

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

in some cases only for alphabets they consider A :1 --- Z:26 in such cases use

在某些情况下,他们只考虑字母 A :1 --- Z:26 在这种情况下使用

ord('A')-64results 1 since we know ord('A')is 65

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