RicardasSim

print binary little endian

Mar 22nd, 2019
662
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void printBinaryLE(void* v, unsigned int s)
  5. {
  6.    
  7.     if(!v||s<1)
  8.     {
  9.         printf("error !\n");
  10.         return;
  11.     }
  12.    
  13.     unsigned char* pv = (unsigned char*) v;
  14.     unsigned int i;
  15.  
  16.     while(s--)
  17.     {
  18.         i=8;
  19.         while(i--)
  20.         {
  21.             printf("%d", pv[s] >> i & 1u ? 1 : 0);
  22.         }
  23.     }
  24.  
  25.     printf("\n");
  26. }
  27.  
  28.  
  29. int main (int argc, char **argv)
  30. {
  31.  
  32.     printf("%zubit machine\n\n",sizeof(void*)*8);
  33.    
  34.     int val = 1;
  35.     printf("%s\n\n",*(char*)&val == 0 ? "big-endian" : "little-endian");
  36.    
  37.     printf("char\n");
  38.     char cV = 0x0F;
  39.     printBinaryLE(&cV, sizeof(cV));
  40.     printf("\n");
  41.    
  42.     printf("unsigned char\n");
  43.     unsigned char ucV = 0xF0;
  44.     printBinaryLE(&ucV, sizeof(ucV));
  45.     printf("\n");
  46.    
  47.     printf("short\n");
  48.     short shV = 0x0F0F;    
  49.     printBinaryLE(&shV, sizeof(shV));
  50.     printf("\n");
  51.    
  52.     printf("unsigned short\n");
  53.     unsigned short ushV = 0xF0F0;
  54.     printBinaryLE(&ushV, sizeof(ushV));
  55.     printf("\n");
  56.    
  57.     printf("int\n");
  58.     int iV = 0x0F0F0F0F;
  59.     printBinaryLE(&iV, sizeof(iV));
  60.     printf("\n");
  61.    
  62.     printf("unsigned int\n");
  63.     unsigned int uiV = 0xF0F0F0F0;
  64.     printBinaryLE(&uiV, sizeof(uiV));    
  65.     printf("\n");
  66.    
  67.     printf("long\n");
  68.     long lV = 0x0F0F0F0F0F0F0F0F;    
  69.     printBinaryLE(&lV, sizeof(lV));
  70.     printf("\n");
  71.    
  72.     printf("unsigned long\n");
  73.     unsigned long ulV = 0xF0F0F0F0F0F0F0F0;
  74.     printBinaryLE(&ulV, sizeof(ulV));
  75.     printf("\n");        
  76.  
  77.     printf("long long\n");
  78.     long long llV = 0x0F0F0F0F0F0F0F0F;
  79.     printBinaryLE(&llV, sizeof(llV));
  80.     printf("\n");
  81.    
  82.     printf("unsigned long long\n");
  83.     unsigned long long ullV = 0xF0F0F0F0F0F0F0F0;
  84.     printBinaryLE(&ullV, sizeof(ullV));
  85.     printf("\n");
  86.    
  87.     printf("float\n");
  88.     float fV = -10.01f;
  89.     printf("decimal: %f\n",fV);
  90.     printBinaryLE(&fV, sizeof(fV));
  91.     printf("\n");
  92.    
  93.     printf("double\n");
  94.     double dV = -10.01;
  95.     printf("decimal: %f\n",dV);
  96.     printBinaryLE(&dV, sizeof(dV));
  97.     printf("\n");
  98.    
  99.     printf("long double\n");
  100.     long double ldV = -10.01;
  101.     printf("decimal: %Lf\n",ldV);
  102.     printBinaryLE(&ldV, sizeof(ldV));    
  103.     printf("\n");
  104.    
  105. return 0;
  106. }
  107.  
  108. /*
  109. output:
  110.  
  111. 64bit machine
  112.  
  113. little-endian
  114.  
  115. char
  116. 00001111
  117.  
  118. unsigned char
  119. 11110000
  120.  
  121. short
  122. 0000111100001111
  123.  
  124. unsigned short
  125. 1111000011110000
  126.  
  127. int
  128. 00001111000011110000111100001111
  129.  
  130. unsigned int
  131. 11110000111100001111000011110000
  132.  
  133. long
  134. 0000111100001111000011110000111100001111000011110000111100001111
  135.  
  136. unsigned long
  137. 1111000011110000111100001111000011110000111100001111000011110000
  138.  
  139. long long
  140. 0000111100001111000011110000111100001111000011110000111100001111
  141.  
  142. unsigned long long
  143. 1111000011110000111100001111000011110000111100001111000011110000
  144.  
  145. float
  146. decimal: -10.010000
  147. 11000001001000000010100011110110
  148.  
  149. double
  150. decimal: -10.010000
  151. 1100000000100100000001010001111010111000010100011110101110000101
  152.  
  153. long double
  154. decimal: -10.010000
  155. 00000000000000000000000000000000000000000000000011000000000000101010000000101000111101011100001010001111010111000010100000000000
  156.  
  157. */
Advertisement
Add Comment
Please, Sign In to add comment