试图在c中将十六进制格式化为little endian

时间:2020-10-28 20:29:41

标签: c hex endianness

因此,我试图在缓冲区中获取值的总和,但是需要重新排列这些值。本质上,我如何获得C来转换此数组中的值:uint16_t inp[] = {0xFF,0x81,0xFD,0x00,0x00,0x00,0x00,0x08,0x00,0x00};看起来像此数组:uint16_t buff[] = {0x81FF,0x00FD,0x0000,0x0800,0x0000}

1 个答案:

答案 0 :(得分:0)

感谢@kaylum,我知道了:

 #include <stdio.h> 
 #include <stdint.h>
 
uint16_t inp[] = {0xFF,0x81,0xFD,0x00,0x00,0x00,0x00,0x08,0x00,0x00};
uint16_t buff[sizeof(inp)/2];


int main(){
    int sum = 0;
    
    for(int i = 0; i < sizeof(buff);i=i+2){
        buff[i] = ((inp[i+1] | 0x00) << 8) | (inp[i] | 0x00);
        //printf("%.4X\n",buff[i]);
    }
    
    for(int i = 0; i < sizeof(buff);i++){
        sum = sum += buff[i];
    }
    printf("%u\n",sum);
    return 0;
}