简体   繁体   中英

Converting character to int and vice versa in Python

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.

#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'

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?

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

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

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 ..

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM