以十六进制/小端​​格式打印出一组数字

print out a group of numbers in hex / little endian format

编写了一个小程序以十六进制打印一些数字,这样我就可以简单地将它们复制并粘贴到十六进制编辑器中,而不是一个一个地输入。我让它们正确打印出来,除了我需要它们是小端格式。如有任何建议或帮助,我们将不胜感激。

#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>

int main( int argc, const char* argv[] )
{
  int ii;
  for (ii = 3; ii<413; ii++)
  {
    printf("%.4x ", ii);
  }
}

现在我的输出如下所示:

0043 0044 0045 0046 0047 0048 0049 004a 004b 004c

但我希望它看起来像

4300 4400 4500 4600 ...

您可以像这样一次打印每个字节来做到这一点

#include <stdio.h>

int main(void) {
    unsigned a;
    for(a=0x43; a<=0x4c; a++)                   // as your question
        printf("%04x ", a);
    printf("\n");

    for(a=0x43; a<=0x4c; a++)
        printf("%02x%02x ", a & 255, (a / 256) & 255);  // endian reversed
    printf("\n");
    return 0;
}

程序输出:

0043 0044 0045 0046 0047 0048 0049 004a 004b 004c
4300 4400 4500 4600 4700 4800 4900 4a00 4b00 4c00