C/C++ 32位浮点型float转16进制并用字符串输出,简洁明了
Posted 狱典司
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++ 32位浮点型float转16进制并用字符串输出,简洁明了相关的知识,希望对你有一定的参考价值。
C/C++ 32位浮点型float转16进制并用字符串输出
C 语言中,指针地址就是IEEE 754 16进制编码,C可以直接调用就不用写函数计算了,C++也是一样的。
联合体共用一段内存,可以用一个包含float和char[4]的联合体,给float赋值,然后打印4个char就行;
提供一个在线转换工具:在线进制转换(支持在2~36进制之间进行任意转换)
代码
32位浮点型float(字符串形式)转16进制并用字符串输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
union HEX
float num;
unsigned char hex_num[4];
;
/* 字符串转32位浮点型转4位16进制 */
void single_to_hex( char* float_str, char* hex_str )
union HEX float_num;
float_num.num = atof(float_str);
memset(hex_str, '\\0', sizeof(hex_str));
char *ptr = hex_str;
for(int i = 0; i < 4; i++) //大端模式顺着来0-4,小端模式逆着来4-0
printf("%02X ", float_num.hex_num[4-i-1]);
snprintf(ptr, sizeof(char)*4, "%02X", float_num.hex_num[4-i-1]);
ptr += 2;
int main()
char a[] = "27.21";
char str[32] = 0;
single_to_hex( a, str );
printf("\\n最终结果:%s\\n", str);
输出是这样的:
41 D9 AE 14
最终结果:41D9AE14
以上是关于C/C++ 32位浮点型float转16进制并用字符串输出,简洁明了的主要内容,如果未能解决你的问题,请参考以下文章