as3rdaccount
as3rdaccount

Reputation: 3931

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?

Upvotes: 2

Views: 30305

Answers (2)

sundar nataraj
sundar nataraj

Reputation: 8692

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

Upvotes: 2

Amber
Amber

Reputation: 526523

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.

Upvotes: 9

Related Questions