我写了一个简单的代码,将小数转换为24位(3字节,6个字符)十六进制数 .
假设您输入0.5,它将十六进制数提供为0x400000 . 0.1 = 0xccccd 0.001 = 0x20c5虽然答案是正确的,但是我喜欢0.1 = = 0x0ccccd
0.001为= 0x0020c5 .
-
我认为一种可能的方法是将十六进制结果转换为字符串,然后使用strlen检查数字位数,然后将结果与适当的零连接起来 . 我对这个方法的问题是我不知道如何将十六进制结果存储在一个变量中 .
-
我想即使我将十六进制数转换为字符串并找到要连接的零数,程序也会有点笨重 . 可能有一种更简单的方法来实现我想要做的事情 . 我只是不知道如何 . 希望有人能告诉我前进的方向 . 我写的程序如下 .
while(true){float frac_no; std :: cout << "Enter a fractional number(0-1) or press 0 to exit:"; std :: cin >> frac_no;
if(!frac_no){break; }
const int max_limit_24 = exp2(23); //最大值0x7FFFFF(1.0)
float inter_hex;
inter_hex = round(max_limit_24 * frac_no); int int_inter_hex = int(inter_hex); std :: cout << std :: hex <<“0x”<< int_inter_hex <<“\ n”;
}
1 回答
如果你只是需要它在输出上有前导0 . 如果你想将它存储为字符串,你可以使用std :: stringstream而不是std :: cout并从中获取字符串 .