Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 32位数字的十六进制表示法_C++_C_String_Floating Point - Fatal编程技术网

C++ 32位数字的十六进制表示法

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;

我有一个脚本,它生成两个随机的32位浮点数a和b,并将它们相除以生成输出c

我想以十六进制格式将所有3个浮点数存储为一个包含8个字符的字符串

我在这里找到了一个在网上做这件事的聪明方法:

下面是我在C语言中对他们建议的实现++

    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;