C语言char数组uint8

C语言char数组uint8,第1张

 写stm32代码时需要用到char数组转float类型,网上找了一遍没找到合适的,于是手写了一个。


输入的字符数组用空格分开,最后一个数据也要有空格在后面

当小数位太多时会有一点点的误差,不知道怎么来的,有懂的大佬赐教一下

void  Decipher(uint8_t *data,float* result) {
	//uint8_t data[250] = "-9.5 12 48.56 15 664 ";
	//输入的数组用空格分开,最后一个数据最后也要有空格
	float dd = 0;							//计算结果
	//float result[20] = { 0 };
	float xiaoshudian = 0.100000000;
	unsigned char flat = 1;					//标记是整数还是小数
	float NorP = 1;							//标记是正数还是负数,1是正数,-1是负数
	unsigned char i = 0, j = 0;				//j是标志存入数组的位置
	while (data[i] != '\n' && data[i] != '') {

		if (data[i] != ' ')
		{
			if (data[i] == '-') {
				NorP = -1;
				i++;
				continue;
			}
			if (data[i] == '.') {
				flat = 0; i++;
			}
			if (flat == 1)dd = dd * 10 + data[i] - '0';			//是整数,按整数计算公式

			else {
				float k = (data[i] - '0') * xiaoshudian;		//是小数,按小数计算公式
				dd = (data[i] - '0') * xiaoshudian + dd;
				xiaoshudian = xiaoshudian * 0.1;
			}
		}
		else {
			flat = 1;
			dd = dd * NorP;			//乘以负号标记位
			NorP = 1;
			result[j++] = dd;		//存入结果数组
			xiaoshudian = 0.100000000;
			dd = 0;
		}
		i++;
	}
	//printf("%f", dd);
	//cout << "译码结果:" << result;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存