本文主要是介绍Float类型数据经过snprintf后改为大端字节序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近有个项目,要求把float类型给用十六进制传到服务器,发现经过snprintf后,mcu小端字节序改为了大端字节序。因此写了这个测试函数,确认是否是snprintf改变了字节序。
#include <stdio.h>
#include <string.h>typedef union data_s
{ float f;unsigned char str[4];unsigned int num;} data_t;int main()
{data_t d = {0};char arr[32] = {0};d.f = 21.875;snprintf(arr, 32 ,"%X", d.num);/* Write C code in this online editor and run it. */printf("float len: %ld union len: %ld\n", sizeof(d.f), sizeof(d));printf("%02X,%02X,%02X,%02X\n", d.str[0], d.str[1], d.str[2], d.str[3]);printf("arr: %s\n", arr);return 0;
}
运行结果
$gcc -o main *.c -lm
$main
float len: 4 union len: 4
00,00,AF,41
arr: 41AF0000
这篇关于Float类型数据经过snprintf后改为大端字节序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!