Advertisement
xDefo

Endianness 2.0

Nov 14th, 2020 (edited)
747
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4.  
  5.  
  6. void main(void)
  7.    {
  8.       int v[]={1,2,31,42};
  9.       int i,a,j,k,sum,controllo,n=sizeof(v);
  10.       unsigned char tmp;
  11.       unsigned char *in,*fin;
  12.  
  13.       printf("Digita 0 per cambiare l'endiannes dei byte altrimenti 1 per l'endiannes dei bit: ");
  14.       scanf("%d",&controllo);
  15.  
  16.       in=(char*)v;
  17.       fin=in+(n-1);
  18.       for(i=0;i<n;i++)
  19.        {
  20.         printf("%d ",*(in+i));
  21.        }
  22.       printf("\n");
  23.       for(i=0,n/=2;i<n;i++,in++,fin--)
  24.        {
  25.         tmp=*(in);
  26.         *(in)=*(fin);
  27.         *(fin)=tmp;
  28.        }
  29.  
  30.       in=(char*)v;
  31.       n*=2;
  32.       if(controllo)
  33.        {
  34.         for(i=0;i<n;i++,in++)
  35.          {
  36.           for(k=0,j=128,a=*(in),sum=0;k<8;k++,j/=2)
  37.            {
  38.             if(a&(1<<k))
  39.              {
  40.               sum+=j;
  41.              }
  42.            }
  43.           *(in)=sum;
  44.           printf("%d ",*(in));
  45.          }
  46.        }
  47.       else
  48.        {
  49.         for(i=0;i<n;i++,in++)
  50.          {
  51.           printf("%d ",*(in));
  52.          }
  53.        }
  54.       printf("\n");
  55.    }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement