How do you get Python 3 to output raw hexadecimal byte? I want to output the hex 0xAA
.
If I use print(0xAA)
, I get the ASCII '170'.
print()
takes unicode text and encodes that to an encoding suitable for your terminal.
If you want to write raw bytes, you'll have to write to sys.stdout.buffer
to bypass the io.TextIOBase
class and avoid the encoding step, and use a bytes()
object to produce bytes from integers:
import sys
sys.stdout.buffer.write(bytes([0xAA]))
This won't include a newline (which is normally added when using print()
).
The solution was to first create a bytes
object:
x = bytes.fromhex('AA')
And then output this to stdout
using the buffered writer
sys.stdout.buffer.write(x)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With