in reply to Re^2: sprintf %X endianness
in thread sprintf %X endianness

Does above sprintf return 00204110 on non-win32 machines?

No. Because your raw input isn't 00204110 as either big-endian or little-endian:

$raw = "\1\24\2\0";; $local = unpack 'L>', $raw;; printf "%08x\n", $local;; 01140200 $local = unpack 'L<', $raw;; printf "%08x\n", $local;; 00021401

I don't know of any machine that would represent that hex value with your input bit pattern.

In fact, I would say it was impossible, because it would mean that the nybbles of the 3rd byte (and only the 3rd byte) would be reversed; and no machine does that!


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^4: sprintf %X endianness
by Anonymous Monk on May 14, 2013 at 22:46 UTC

    No. Because your raw input isn't 00204110 as either big-endian or little-endian:

    *sigh* look at the op, 00021401 is the thing

      *sigh* look at the op, 00021401 is the thing

      *sign* Is what "thing"?

      Cos in the OP you wrote:"00021401", but in this post you wrote: 00204110 twice. Which should I take as being your requirement?

      IF you are now saying that the OP is what you want, then apply yourself, because what I posted in my first response is all you need:

      $raw = "\1\24\2\0";; $local = unpack 'L>', $raw;; printf "%08x\n", $local;; 01140200 $local = unpack 'L<', $raw;; printf "%08x\n", $local;; 00021401

      And yes, that last pair of statements will work regardless of the platform it is run on.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        *sign* Is what "thing"? Cos in the OP you wrote:"00021401", but in this post you wrote: 00204110 twice. Which should I take as being your requirement?

        I laid out my question in the OP. You ignored it, and then I typoed. I don't have a different machine to test if sprintf %x does the same thing on all machines.