[Tutor] Printing byte arrays

Dennis Lee Bieber wlfraed at ix.netcom.com
Mon Mar 7 17:02:29 EST 2022


On Mon, 7 Mar 2022 14:02:19 +0100 (CET), Ludo Joris
<ludo.a.joris at telenet.be> declaimed the following:

>>>> c
>b'\x00\xe0\xe0\x00\xe0\xe0 \xc0\xe0\xa0\xa0\xa0\x00  \xe0\xe0    \xe0\xe0  \xc0\xe0 \xe0\xc0\x00\x00\x00\x00\x00\x00\x00\x80\xe0\xc0\xe0\x80\x00\xc0\xe0 \xe0\xc0\x00 \xe0\xe0 \x00\x00  \xe0\xe0  \xc0\xe0 '

	This isn't really "print"ing c as a string, but is producing a
representation (repr(c)) which is a form that could be used as a literal in
a subsequent assignment.

	One aspect is that NON-PRINTABLE bytes/characters are shown as
hex-escape sequences: \xXX (X is in 0..9a..f). Any bytes mapping to a
printable character will be output as that character. Compare:

>>> b
[0, 224, 224, 0, 224, 224, 32, 192, 224, 160, 160, 160, 0, 32, 32, 224,
224, 32, 32, 32, 32, 224, 224, 32, 32, 192, 224, 32, 224, 192, 0, 0, 0, 0,
0, 0, 0, 128, 224, 192, 224, 128, 0, 192, 224, 32, 224, 192, 0, 32, 224,
224, 32, 0, 0, 32, 32, 224, 224, 32, 32, 192, 224, 32]
>>> c = bytes(b)
>>> c
b'\x00\xe0\xe0\x00\xe0\xe0 \xc0\xe0\xa0\xa0\xa0\x00  \xe0\xe0    \xe0\xe0
\xc0\xe0
\xe0\xc0\x00\x00\x00\x00\x00\x00\x00\x80\xe0\xc0\xe0\x80\x00\xc0\xe0
\xe0\xc0\x00 \xe0\xe0 \x00\x00  \xe0\xe0  \xc0\xe0 '
>>> print(c)
b'\x00\xe0\xe0\x00\xe0\xe0 \xc0\xe0\xa0\xa0\xa0\x00  \xe0\xe0    \xe0\xe0
\xc0\xe0
\xe0\xc0\x00\x00\x00\x00\x00\x00\x00\x80\xe0\xc0\xe0\x80\x00\xc0\xe0
\xe0\xc0\x00 \xe0\xe0 \x00\x00  \xe0\xe0  \xc0\xe0 '
>>> print(" ".join(["%2.2X" % bt for bt in c]))
00 E0 E0 00 E0 E0 20 C0 E0 A0 A0 A0 00 20 20 E0 E0 20 20 20 20 E0 E0 20 20
C0 E0 20 E0 C0 00 00 00 00 00 00 00 80 E0 C0 E0 80 00 C0 E0 20 E0 C0 00 20
E0 E0 20 00 00 20 20 E0 E0 20 20 C0 E0 20
>>> 

in which I explicitly convert each byte into two hex digits (eschewing the
\x escape notation)

	Hex 20 => decimal 32 => ASCII space character


>>> byte = bytes(range(256))
>>> byte
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f
!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
>>> " ".join(["%2.2X" % bt for bt in byte])
'00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18
19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31
32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A
4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63
64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C
7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95
96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE
AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7
C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0
E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
FA FB FC FD FE FF'
>>> 
>>> print(" ".join(["%2.2X" % bt for bt in byte]))
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18
19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31
32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A
4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63
64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C
7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95
96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE
AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7
C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0
E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
FA FB FC FD FE FF
>>> 


-- 
	Wulfraed                 Dennis Lee Bieber         AF6VN
	wlfraed at ix.netcom.com    http://wlfraed.microdiversity.freeddns.org/



More information about the Tutor mailing list