急求十六进制转浮点数C程序!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求十六进制转浮点数C程序!!!相关的知识,希望对你有一定的参考价值。
参考技术A #include<stdio.h>
#include
<stdint.h>
void
test_disassemble_float()
float
a
=
1.0,
b
=
2.3;
uint8_t
*pa
=
(uint8_t
*)&a,
*pb
=
(uint8_t
*)&b;
printf("%f:
%02x,
%02x,
%02x,
%02x\n",
a,
pa[0],
pa[1],
pa[2],
pa[3]);
//
output:
0x00,
0x00,
0x80,
0x3f
printf("%f:
%02x,
%02x,
%02x,
%02x\n",
b,
pb[0],
pb[1],
pb[2],
pb[3]);
//
output:
0x33,
0x33,
0x13,
0x40
void
test_assemble_float()
uint8_t
pa[4]
=
0x00,
0x00,
0x80,
0x3f;
uint8_t
pb[4]
=
0x33,
0x33,
0x13,
0x40;
printf("%f\n",
*((float
*)pa));
printf("%f\n",
*((float
*)pb));
int
main()
test_disassemble_float();
test_assemble_float();
//
这两个函数,第一个把float拆成了4个uchar,第二个用4个uchar组成了一个float;
//
剩下的就不难了吧,读4个uchar,放到数组里,强制转换;
//
按照你的意思,每个uchar都读2个十六进制数字就行了;
return
0;
字符串转浮点数 字符串转整型数
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<assert.h> double AtOf(const char* ptr); double AtOi(const char* ptr) { assert(ptr); double value = 0.0; double sign = 0; while (*ptr == ‘ ‘)//跳过空格 { ptr++; } if (*ptr == ‘+‘ || *ptr == ‘-‘) { sign = (*ptr == ‘-‘) ? -1 : 1; ptr++; } while (*ptr <= ‘9‘&& *ptr >= ‘0‘) { value = value * 10 + *ptr - ‘0‘; ptr++; } return sign*value; } void test1() { char *p = " +1234.6978"; double ret = AtOf(p); printf("%lf\n", ret); } void test2() { char *p = " -1234.6978"; double ret = AtOi(p); printf("%lf\n", ret); } int main() { test2(); system("pause"); return 0; } double AtOf(const char * ptr) { assert(ptr); double value = 0.0; double power = 0.0; int sign = 0; while (*ptr ==‘ ‘ ) { ++ptr; } if (*ptr == ‘+‘ || *ptr == ‘-‘) { sign = (*ptr == "-") ? -1 : 1; ++ptr; } while (*ptr >= ‘0‘ && *ptr <= ‘9‘) { value = value * 10 + (*ptr) - ‘0‘; ptr++; } power = 1; if (*ptr == ‘.‘) { ++ptr; while (*ptr >= ‘0‘ && *ptr <= ‘9‘) { value = value * 10 + (*ptr) - ‘0‘; power *= 10; ptr++; } } return sign*value / power; }
本文出自 “fun” 博客,请务必保留此出处http://10725723.blog.51cto.com/10715723/1758174
以上是关于急求十六进制转浮点数C程序!!!的主要内容,如果未能解决你的问题,请参考以下文章