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;
// 将字节数组转换为 float
if (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);
7.char* 转string
std::string str;
memcpy(&str[0],buf->data(),buf->size());
cout<<str<<endl;