2

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?

eshirvana
  • 23,227
  • 3
  • 22
  • 38

2 Answers2

4

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)
eshirvana
  • 23,227
  • 3
  • 22
  • 38
3

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)
Akida
  • 1,076
  • 5
  • 16