C++ 32位数字的十六进制表示法
我有一个脚本,它生成两个随机的32位浮点数a和b,并将它们相除以生成输出c 我想以十六进制格式将所有3个浮点数存储为一个包含8个字符的字符串 我在这里找到了一个在网上做这件事的聪明方法: 下面是我在C语言中对他们建议的实现++C++ 32位数字的十六进制表示法,c++,c,string,floating-point,C++,C,String,Floating Point,我有一个脚本,它生成两个随机的32位浮点数a和b,并将它们相除以生成输出c 我想以十六进制格式将所有3个浮点数存储为一个包含8个字符的字符串 我在这里找到了一个在网上做这件事的聪明方法: 下面是我在C语言中对他们建议的实现++ fileout << hex << *(int*)&a[i] << endl; fileout << hex << *(int*)&b[i] << endl;
fileout << hex << *(int*)&a[i] << endl;
fileout << hex << *(int*)&b[i] << endl;
fileout << hex << *(int*)&c[i] << endl;
fileout如果我正确理解您的要求,如果位数小于8,您希望在十六进制表示法的左侧添加零作为填充字符
在这种情况下,您可以简单地使用流操纵器:
#include <iomanip> // Necessary for the setw and setfill
int n = ...;
std::cout << std::hex << std::setw(8) << std::setfill('0') << n;
忘了聪明吧(根本不是聪明)。查看setw
和setfill
使用并:
fileout这种“聪明的方式”在语言标准中是非法的。
#include <iomanip> // Necessary for the setw and setfill
int n = ...;
std::cout << std::hex << std::setw(8) << std::setfill('0') << n;
00000400
fileout << hex << setw(8) << setfill('0') << *(int*)&a[i] << endl;
fileout << hex << setw(8) << setfill('0') << *(int*)&b[i] << endl;
fileout << hex << setw(8) << setfill('0') << *(int*)&c[i] << endl;