当前位置:   article > 正文

C/C++ 32位浮点型float转16进制并用字符串输出,简洁明了_c++float转16进制

c++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);
    
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

输出是这样的:

41 D9 AE 14
最终结果:41D9AE14
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/986468
推荐阅读
相关标签
  

闽ICP备14008679号