C lies to you. What you think of as a string in C is actually an array of int1's (eight bit integers). C's "char" is actually "int1", so when you subscript a C "string" you get an integer.

Think of perl's string as an opaque type. That's why perl has an ord() function and a chr() function, to convert back and forth between string and integer.

If you want to handle your information like you would in C, convert it to an array of ints, which you can then subscript just like you do in C.

Here are several ways:

my @intarray = unpack 'c*', "perl string"; my @intarray = map ord, split //, "perl string";

Also, if you want to pick the i'th integer value from a perl string, there is

my $integer = vec "perl string", $i, 8;

Hope this helps.

Furthermore, when you were doing (simplified example)

$something = substr("a string", 4, 1) & 2**3;

you were really doing

$something = atoi("r") & 2**3;

because if one argument to "&" is a number and the other is a string, it converts the other to a number (with an equivalent to C's atoi function).


In reply to Re^5: I've muddled my bit and byte formats. by tybalt89
in thread I've muddled my bit and byte formats. by murrayn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.