如何将无符号字符值表示为十六进制字符串

How to represent unsigned char values as hexadecimal string?

本文关键字:表示 十六进制 字符串 字符 无符号      更新时间:2023-10-16

我想将无符号字符数组内容转换为十六进制字符串表示形式。
任何人都可以帮助功能或出路吗?

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字符或字符串的返回值。

更新:这是我使用答案想出的功能@πάνταῥεῖ:我想让它变得更好,并使其能够处理各种长度尺寸的0x00,0x04,0x00,0x11unsigned char

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();
    }

我想获取3374747372字符或字符串的返回值。

在这种情况下,强制转换不起作用。

您可以使用文本格式 IO 来获取数组内容的十六进制字符串表示形式:

unsigned char codeslink[5] ={ 0x33, 0x74, 0x74, 0x73, 0x72};
std::ostringstream oss;
oss << std::hex << std::setfill('0');
for(size_t i = 0; i < 5; ++i) {
    oss << std::setw(2) << (unsigned int)codeslink[i];
}
std::string result = oss.str();

现场演示