How to convert a 128-bit integer to a decimal ascii string in C?

前端 未结 7 2166
小蘑菇
小蘑菇 2020-12-14 10:44

I\'m trying to convert a 128-bit unsigned integer stored as an array of 4 unsigned ints to the decimal string representation in C:

unsigned int src[] = { 0x1         


        
相关标签:
7条回答
  • 2020-12-14 11:26

    Same thing, but with 32-bit integer arithmetic:

    #include <stdio.h>
    
    unsigned short a [] = { 
      0x0876, 0x5421,
      0xfedc, 0xba90,
      0x90ab, 0xcdef,
      0x1234, 0x5678
    };
    
    int
    main ()
    {
      unsigned int d, r;
    
      do
        {
          r = a [0];
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [1];
          a [0] = d;
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [2];
          a [1] = d;
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [3];
          a [2] = d;
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [4];
          a [3] = d;
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [5];
          a [4] = d;
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [6];
          a [5] = d;
    
          d = r / 10;
          r = ((r - d * 10) << 16) + a [7];
          a [6] = d;
    
          d = r / 10;
          r = r - d * 10;
          a [7] = d;
    
          printf ("%d\n", r);
        }
      while (a[0] || a[1] || a[2] || a[3] || a [4] || a [5] || a[6] || a[7]);
    
    
      return 0;
    }
    
    0 讨论(0)
提交回复
热议问题