我正在尝试创建一个以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
答案 0 :(得分:1)
一个角色只能举行......好吧,一个角色。在十六进制数的情况下,0-F将是一个字符。当你有一个字符数组(多个字符)时,你有一个字符串。你怎么可能将十进制数255,十六进制FF表示为单个字符?
答案 1 :(得分:1)
char
只能代表一个字符。如果您需要整个字符串,最好的办法是将调用创建的std::string
返回a.str()
。
如果您需要返回C风格的字符串,则需要返回指向字符存储位置的char *
(或char const *
),此时您需要管理它的生命周期(std::string
为你做的)。