将十六进制数与零连接

时间:2017-05-01 03:06:48

标签: c++ hex 24-bit

我编写了一个简单的代码,将小数转换为24位(3个字节,6个字符)十六进制数。

假设您输入0.5,它将十六进制数字提供为0x400000。                       0.1 = 0xccccd                      0.001 = 0x20c5 虽然答案是正确的,但我想要做的是保留6个字符的表示,所以我希望0.1为= 0x0ccccd和
                                     0.001为= 0x0020c5。

  1. 我认为一种可能的方法是将十六进制结果转换为字符串,然后使用strlen检查数字位数,然后将结果与适当的零连接起来。我对此方法的问题是我不确定如何将十六进制结果存储在变量中。
  2. 我想即使我将十六进制数转换为字符串并找到要连接的零数,程序也会有点笨重。可能有一种更简单的方法来实现我想要做的事情。我只是不知道如何。 希望有人能告诉我前进的方向。我写的程序如下。

    而(真){ float frac_no; std :: cout<< "输入小数(0-1)或按0退出:&#34 ;; std :: cin>> frac_no;
    如果(!frac_no){     打破; }

    const int max_limit_24 = exp2(23); //最大值0x7FFFFF(1.0)

    浮动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 :(得分:0)

#include <iomanip>
int val = 0x20c5;
std::cout << "0x" << std::setw(6) << std::hex << std::setfill('0') << val << '\n';

如果你只是需要它在输出上有前导0。如果你想将它存储为字符串,你可以使用std :: stringstream而不是std :: cout并从中获取字符串。