C ++十进制到十六进制(int到char)

时间:2016-01-18 01:53:38

标签: c++

我正在尝试创建一个以int为参数的函数,并返回类型为char的十六进制。这是功能:

char toHex(int dec)
{
    std::stringstream a;
    a << std::hex << dec;
    return a.str().c_str()[0];
}

它返回十六进制版本,但只返回第一个数字,因为我写了[0]。因此,如果十六进制值为14,那么我只得到一个1。如果没有此[]规范,则为std::string,但我需要char形式的完整十六进制。

我正在考虑创建一个for循环,用一个循环替换0,以便迭代第一个i个字符,但我认为没有办法追加常规字符({{1一起来。我该怎么办?谢谢!

编辑: 为了清楚起见,我想以此过程为例: 声明char变量char,然后将整数char h转换为十六进制,即104,然后将0x68指定给变量0x68类型h

2 个答案:

答案 0 :(得分:1)

一个角色只能举行......好吧,一个角色。在十六进制数的情况下,0-F将是一个字符。当你有一个字符数组(多个字符)时,你有一个字符串。你怎么可能将十进制数255,十六进制FF表示为单个字符?

答案 1 :(得分:1)

char只能代表一个字符。如果您需要整个字符串,最好的办法是将调用创建的std::string返回a.str()

如果您需要返回C风格的字符串,则需要返回指向字符存储位置的char *(或char const *),此时您需要管理它的生命周期(std::string为你做的)。