【发布时间】:2016-03-15 16:44:45
【问题描述】:
我想将无符号字符数组内容转换为十六进制字符串表示形式。
任何人都可以提供功能或出路吗?
unsigned char codeslink[5] ={ 0x33, 0x74, 0x74, 0x73, 0x72};
std::string my_std_string(reinterpret_cast<const char *>(codeslink), 5);
std::string my_std_string((const char *)codeslinks);
我想得到一个返回值3374747372 作为字符或字符串。
更新:
这是我使用@πάνταῥεῖ: 提出的功能答案我想让它变得更好,并使其能够处理unsigned char,如各种长度大小的0x00,0x04,0x00,0x11。
std::string Return_Uchar_To_String(unsigned char uns_char, size_t uns_char_len)
{
std::ostringstream oss;
oss << std::hex << std::setw(2) << std::setfill('0');
for(size_t i = 0; i < uns_char_len; ++i)
{
oss << (unsigned int)uns_char[i];
}
return oss.str();
}
【问题讨论】:
-
std::string my_std_string = std::to_string(3374747372);? -
这不是通过强制转换完成的。
-
这行不通:
0x33 != "33"。否则,这是一个副本:stackoverflow.com/questions/4691608/… -
@R_Kapp
std::string my_std_string = std::to_string(codeslink);不明白你的意思? @πάντα ῥεῖ 如何做到最好? @NatanOliver 对我也不起作用 -
@R_Kapp 的评论是关于十六进制值的废话。
标签: c++ arrays string unsigned-char