Ricardo Casimiro
Ricardo Casimiro

Reputation: 162

Python - convert signed int to bytes

this code works fine:

an_int = 5
a_bytes_big = an_int.to_bytes(2, 'big')
print(a_bytes_big)

but when i change an_int to -5, i get the following error:

a_bytes_big = an_int.to_bytes(2, 'big')

OverflowError: can't convert negative int to unsigned

how can I convert signed int without getting error?

Upvotes: 3

Views: 4682

Answers (2)

eshirvana
eshirvana

Reputation: 24603

error messgae is clear , if your vaue includes signs you need to pass signed =True when you convert it to bytes:

an_int = -5
a_bytes_big = an_int.to_bytes(2, 'big', signed = True)
print(a_bytes_big)

Upvotes: 5

Akida
Akida

Reputation: 1116

The method to_bytes takes a third parameter: signed: So you can modify your code to this:

an_int = -5
a_bytes_big = an_int.to_bytes(2, 'big', signed=True)
# or
a_bytes_big = an_int.to_bytes(2, 'big', True)

Upvotes: 3

Related Questions