in reply to Re^58: Interleaving bytes in a string quickly
in thread Interleaving bytes in a string quickly

A byte is an integer with range 0..255

  • Comment on Re^59: Interleaving bytes in a string quickly

Replies are listed 'Best First'.
Re^60: Interleaving bytes in a string quickly
by Anonymous Monk on Mar 04, 2010 at 17:15 UTC

    No. Neither Perl nor C uses the term "byte" to refer to a class of (unsigned) integers. A byte is the minimal addressable unit of memory. For the vast majority of modern, non-specialist cpus, that means 8-bits. And an 8 bit byte can vaiously contain unsigned integers 0-255, or signed integers -127-127, or 8 discrete boolean values.

    Wikipedia says: The byte ... is an ordered collection of bits, in which each bit denotes the binary value of 1 or 0. The size of a byte is typically hardware dependent, but the modern de facto standard is 8 bits, as this is a convenient power of 2.

    perlunicode says: Beginning with version 5.6, Perl uses logically-wide characters to represent strings internally. In future, Perl-level operations will be expected to work with characters rather than bytes. ... Under character semantics, many operations that formerly operated on bytes now operate on characters.

    It makes a whole lot more sense than "a byte can be stored in 1 byte or it can be stored in multiple bytes. But when it is stored in multiple bytes it is still just 1 byte". Of course, you'll probably start talking about that pretentious term 'octet' coined to be unambiguous, but unless your using a 12-bit or 40 bit dsp, there is no ambiguity. And if you are, the term octet is meaningless.

      Wikipedia says: The byte ... is an ordered collection of bits, in which each bit denotes the binary value of 1 or 0. The size of a byte is typically hardware dependent, but the modern de facto standard is 8 bits, as this is a convenient power of 2.

      I am referring to an ordered collection of 8 bits.

      And an 8 bit byte can vaiously contain unsigned integers 0-255, or signed integers -127-127, or 8 discrete boolean values.

      Or 8 bits of a stream of HDMI information, as is the case here.

      Thanks for the quotes. They said it much better than I did. You're trying to tell me that a byte of HDMI info on disk is suddenly not a byte of HDMI info if I place it in a Perl var, and that doesn't fly.

        I am referring to an ordered collection of 8 bits.

        No you weren't. How can an ordered collection of 8-bits be "just stored differently"?

        $_ = "\x80\x81"; # Value is bytes 80 81 utf8::upgrade($_); # Value is still bytes 80 81, # just stored differently.
      A reply falls below the community's threshold of quality. You may see it by logging in.