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

时间:2015-10-25 21:54:33

标签: c formatting hex endianness

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

#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 ...

1 个答案:

答案 0 :(得分:2)

您可以通过一次打印每个字节来完成此操作,例如

#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