在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
Converting character to int and vice versa in Python
提问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 255
since 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')-64
results 1 since we know ord('A')
is 65
ord('A')-64
结果 1 因为我们知道 ord('A')
是 65