Richard D. Moores wrote:
On Sun, Aug 8, 2010 at 08:11, bob gailer <bgai...@gmail.com> wrote:
On 8/8/2010 1:57 AM, Richard D. Moores wrote:

How were we supposed to know that all the hexes have 2 digits?
In version 2.6.5 Language Reference 2.4.1 - String literals:
\xhh Character with hex value hh

But
os.urandom(6)
b'\x13\xf1\x138a\xcc'

In my Active Python 3.1 docs, Language Ref 2.4.1. String and Bytes
literals, I have

The same as what you quoted, plus a couple of footnotes:
\xhh Character with hex value hh (2,3)

That footnote 2, "Unlike in Standard C, at most two hex digits are
accepted.", seems necessary; otherwise that \x138a could be seen by my
former, byte-ignorant self as a \xhhhh, and puzzled about why I got
only 4 bytes, not 6.  :)

But I never would have thought to have looked in the docs where you did.

Dick

Big difference between 2.x and 3.x. In 3.x, strings are Unicode, and may be stored either in 16bit or 32bit form (Windows usually compiled using the former, and Linux the latter).

Presumably in 3.x, urandom returns a byte string (see the b'xxxx' form), which is 8 bits each, same as 2.x strings. So you'd expect only two hex digits for each character.

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to