直接贴代码吧,欢迎交流,转载请注明出处,谢谢。
1、头文件:
1 /* 2 * mmath.h 3 * 4 * Created on: Dec 6, 2016 5 * Author: cow 6 */ 7 8 #ifndef MMATH_H_ 9 #define MMATH_H_ 10 #include <stdio.h> 11 #include <stdlib.h> 12 #include <tgmath.h> 13 #include <string.h> 14 15 long FloatTohex(float HEX);//浮点数到十六进制转换 16 17 float BinarytoInt(char *ch,int num);//二进制到整数 18 19 float BinarytoSmallNumber(char *ch,int num);//小数的二进制到小数 20 21 float HextoFloat(char* ch); //传入8位16进制 42F0E666 22 23 24 #endif /* MMATH_H_ */
2、source
/* * mymath.c * * Created on: Dec 6, 2016 * Author: cow */ #include "mymath.h" long FloatTohex(float HEX)//浮点数到十六进制转换1 { return *( long *)&HEX; } float BinarytoInt(char *ch,int num) { int retint = 0,i = 0; for(i = 0;i< num;i++) { retint = retint + (ch[i] == '1' ? 1:0) * pow(2,(num-1-i)); } return (float)retint; } float BinarytoSmallNumber(char *ch,int num) { float retf = 0.0; int i = 0; for(i = 0;i<num;i++) { retf = retf + (ch[i] == '1'?1:0) * pow(2,(-(i + 1)) ) ; } return retf; } float HextoFloat(char* ch) //传入8位16进制 42F0E666 { float returnData = 0.0; int count = 8,i = 0; char binary[32] = {0}; char tmp = '0'; for(i = 0;i<count;i++) { tmp = ch[i]; switch(tmp) { case '0': sprintf(binary+i*4,"%s","0000"); break; case '