C语言中float byte char uint_8 转换方法
1.float转Byte[]
#include <stdio.h>int main() {float floatValue = 3.141592; // 浮点数值// 存储到字节数组unsigned char *byteArr = (unsigned char *)&floatValue;// 打印字节数组for (int i = 0; i < sizeof(float); i++) {printf("Byte %d: 0x%02X\n", i, byteArr[i]);}return 0;
}
2.byte[]转float
#include <stdio.h>int main() {unsigned char byteArr[sizeof(float)]; // 字节数组// 假设 byteArr 中包含了 float 的字节数组表示float floatValue;// 将字节数组转换为 floatif (sizeof(float) == sizeof(byteArr)) {memcpy(&floatValue, byteArr, sizeof(float));} else {printf("字节数组的大小不匹配\n");// 错误处理}// 现在 floatValue 包含了从字节数组还原的 float 值printf("还原的浮点数:%f\n", floatValue);return 0;
}
3.char * uint8_t * 相互转换代码
#include <stdio.h>
#include <stdint.h>int main() {unsigned char byteArr[4] = {0x01, 0x02, 0x03, 0x04};// 使用类型转换将 unsigned char * 转换为 uint8_t *uint8_t *uint8Arr = (uint8_t *)byteArr;// 现在 uint8Arr 就指向了与 byteArr 相同的内存位置for (int i = 0; i < 4; i++) {printf("uint8Arr[%d]: 0x%02X\n", i, uint8Arr[i]);}return 0;
}
4.int 转换同理
int intValue=10000;unsigned char* intArr=(unsigned char*)&intValue;printf("int value: %d\n",intValue);for (int i = 0; i < sizeof(int); i++) {printf("byte %d 0x%02x\n",i,intArr[i]);}int convInt;memcpy(&convInt,intArr, sizeof(int ));printf("int convert %d",convInt);
5.数字转字符串
int num = 99;char str[10]; // 创建一个足够大的字符数组来存储数字的字符串表示sprintf(str, "%d", num); // 使用 sprintf 将整数转换为字符串printf("convert str: %s\n", str);for (int i = 0; i < 10; i++) {printf("byte %d 0x%02x\n", i,str[i]);}
6.字符串转int
#include <stdio.h>
#include <stdlib.h>int main() {char str[] = "3.141592";double num = atof(str); // 将字符串转换为浮点数printf("转换后的浮点数:%f\n", num);return 0;
}
char str[] = "42 3.141592";int num;double pi;// 使用 sscanf 从字符串中提取整数和浮点数sscanf(str, "%d %lf", &num, &pi);printf("提取的整数:%d\n", num);printf("提取的浮点数:%f\n", pi);