On Sep 12, 2007, at 8:48 AM, Matthias WçÄhter wrote: > On 12.09.2007 13:45, F. Senault wrote: >> You should look in the 3rd part, chapter 22, under "The Basic Types". >> Table 22.2, page 306 (in my PDF edition). >> >> It says : >> >> | Table 22.2. Substitutions in double-quoted strings >> | -------------------------------------------------------------- >> | \a Bell / alert (0x07) \nnn Octal nnn >> | \b Backspace (0x08) \xnn Hex nn >> | \e Escape (0x1b) \cx Control-x >> | \f Formfeed (0x0c) \C-x Control-x >> | \n Newline (0x0a) \M-x Meta-x >> | \r Return (0x0d) \M-\C-x Meta-control-x >> | \s Space (0x20) \x x >> | \t Tab (0x09) #{code} Value of code >> | \v Vertical tab (0x0b) >> | -------------------------------------------------------------- >> >> So, your example uses the octal representation. > > Does anyone know a good reason for outputting 8 bit byte characters > as octals in String#inspect? > > see string.c (1.8.6): > > [...] > else { > sprintf(s, "\\%03o", c & 0377); > rb_str_buf_cat2(result, s); > } > [...] > > why not make it: > > sprintf(s, "\\x%02x", c & 0377); > > I can't understand why it is desirable to introduce yet another base > that is rarely used outside of chmod and od (without options). We > learned decimals, we got used to binary and even hex, but why do we > need octals just for these control characters when there is no > benefit compared to the hex representation (note: both take 4 chars > to display)? > > - Matthias This is pure history. The use of octal notation predates hex by a long time. In my "The C Programming Language" [1978], 0ddd and 0xddd were both valid integer literals, but only octal \ddd was valid for character constants. In fact, there's a table of internal sizes for data types on various machines which includes the Honeywell 6000 having a 9-bit char type and 36-bit types for short, int, long, and float and 72-bit doubles. For that machine, octal representation of bit patterns makes perfect sense. -Rob Rob Biedenharn http://agileconsultingllc.com Rob / AgileConsultingLLC.com