我有一个wireshark数据,其输出看起来像这样:“ c1 c1 31 ad 1f ...”。 我存储的这些值是一个数组
unit8_t array[10]={0xc1,0xc1,0x31,0xad,0x1f...}
现在,我想将此数组转换为小端格式,并存储在其他数组中:
//Sample code to convert to little endian
for(i = 0;i<32;i++)
{
uint8_t res = ntohs(htons(array[i]));// converting element to little endian
plain_text_little_endian[i] = res;
}
只想知道,它将转换为“ li”的小尾数吗?
答案 0 :(得分:2)
您将ntohs()
或htons()
应用于单个字节值(uint8_t
),但是这些
函数(或 macros )考虑两个字节的值。
无论如何,一个接一个地应用这些功能不会改变该值。想一想在日常生活中,您交换两个对象,然后再次交换它们。
如果您想将array
中的每对字节视为一个16位整数
按照大端顺序并以主机顺序存储它们,也许应该
你试试这个:
uint8_t array[10]={...};
uint16_t output[5];
for(int i=0; i<5; ++i)
{
output[i]=(uint16_t)((array[2*i+1]<<8)|array[2*i+0]));
}