c语言float转char,c语言将int转为char
c语言float转char,c语言将int转为char
1、float 的内存分配
3.14数在内存中的表示
-3.14数在内存中的表示
符号位(Sign) : 0代表为正,1代表为负
指数位(Exponent):用于存储科学计数法中的指数数据,并且要加上偏移量(float偏移127,double偏移量1023)
尾数部分(Mantissa):尾数部分
2、什么是大小端?
对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址,这称为大端(big-endian)字节序。
大小端
CPU平台:ARM
操作系统:Ubuntu 18.04
编程语言:C/C++
3、float转uint8数组的代码:
void float2u8Arry(uint8_t *u8Arry, float *floatdata, bool key){ uint8_t farray[4]; *(float *)farray = *floatdata; if (key == true) { u8Arry[3] = farray[0]; u8Arry[2] = farray[1]; u8Arry[1] = farray[2]; u8Arry[0] = farray[3]; } else { u8Arry[0] = farray[0]; u8Arry[1] = farray[1]; u8Arry[2] = farray[2]; u8Arry[3] = farray[3]; }}
4、uint8数组转float的代码:
float u8Arry2float(uint8_t *data, bool key){ float fa = 0; uint8_t uc[4]; if (key == true) { uc[3] = data[0]; uc[2] = data[1]; uc[1] = data[2]; uc[0] = data[3]; } else { uc[0] = data[0]; uc[1] = data[1]; uc[2] = data[2]; uc[3] = data[3]; } memcpy(&fa, uc, 4); return fa;}
5、一个example.cpp:
其中float2u8Arry和u8Arry2float函数传入fasle默认表示小端存储:
#include <iostream>#include <cstring>void printArry(unsigned char arr[], int n){ int i; for (i = 0; i < n; i++) { printf("%x ", arr[i]); } printf("\");}float u8Arry2float(uint8_t *data, bool key){ float fa = 0; uint8_t uc[4]; if (key == true) { uc[3] = data[0]; uc[2] = data[1]; uc[1] = data[2]; uc[0] = data[3]; } else { uc[0] = data[0]; uc[1] = data[1]; uc[2] = data[2]; uc[3] = data[3]; } memcpy(&fa, uc, 4); return fa;}void float2u8Arry(uint8_t *u8Arry, float *floatdata, bool key){ uint8_t farray[4]; *(float *)farray = *floatdata; if (key == true) { u8Arry[3] = farray[0]; u8Arry[2] = farray[1]; u8Arry[1] = farray[2]; u8Arry[0] = farray[3]; } else { u8Arry[0] = farray[0]; u8Arry[1] = farray[1]; u8Arry[2] = farray[2]; u8Arry[3] = farray[3]; }}int main(){ float fa = 123.536; std::cout << "fa: " << fa << std::endl; uint8_t u8data[4]; float2u8Arry(u8data, &fa, false); printArry(u8data, 4); fa = u8Arry2float(u8data, false); std::cout << "fa: " << fa << std::endl; return 0;}
6、编译:
g++ example.cpp -o example
7、运行:
./example
编译运行效果
阿木实验室致力于为机器人研发提供开源软硬件工具和课程服务,让研发更高效!
- End -
c语言
- 随机文章
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 儿童教育文章(儿童教育)
- 光遇花手先祖位置(安卓光遇手花先祖)
- 抖音卡(抖音卡顿怎么解决)
- xboxones(xboxone手柄怎么配对主机)
- 兵马俑(兵马俑介绍和历史背景)
- 海猫鸣泣之时游戏(海猫鸣泣之时游戏在哪玩)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 儋州市第二中学(儋州市第二中学录取分数线)
- 鬼泣5攻略(鬼泣5攻略第三关怎么跳)
- 地球日主题(2020年世界地球日主题)
- 和柳亚子(和柳亚子先生于田)
- 冰客(冰客果汁)
- yy魔兽(yy魔兽世界)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 充值卡代理(充值卡代理加盟)
- 拆奶罩
- 杭同(杭同培训中心怎么样)
- 蝙蝠给人类的一封信(蝙蝠给人类的一封信)
- 服饰加盟(服饰加盟店招商)
- 疯狂填字(疯狂填字5)
- 点对点短信息(点对点短信息费是什么意思)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 查传倜(查传倜个人生活)
- 钢筋等级符号(钢筋等级符号电脑怎么输入)
- 常州天宁寺(常州天宁寺求什么灵验)
- 河源巴伐利亚(河源巴伐利亚庄园)
