C++ 如何将字符串转换为十六进制字符串?
可能重复:C++ 如何将字符串转换为十六进制字符串?,c++,C++,可能重复: 正在尝试我在StackOverflow中找到的示例代码 std::string text = "¯"; // AF in HEX ASCII. std::ostringstream result; result << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; std::copy(text.begin(), text.end(), std:
正在尝试我在StackOverflow中找到的示例代码
std::string text = "¯"; // AF in HEX ASCII.
std::ostringstream result;
result << std::setw(2) << std::setfill('0') << std::hex << std::uppercase;
std::copy(text.begin(), text.end(), std::ostream_iterator<unsigned int>(result, " "));
从
char
转换为int
(0xaf
大于0x7f
,因此是负数)。是的,我认为Hristo是对的。这里的错误假设是字符是ASCII编码的(因为ASCII的范围仅从0x0
到0x7f
),它是扩展的ASCII@Guillhermequelhos:没有“扩展ASCII”这样的东西。如果您使用的编码超过了标准化的127个字符的编码,则需要指定编码(该网站提到它是ISO-8859-1,但还有其他编码)
if(value > 6)
{ //replace
std::string& str = stringlist2[count];
const std::string& from = "FFFFFF";
const std::string& to = "";
size_t j;
for ( ; (j = stringlist2[count].find( from )) != string::npos ; ) {
stringlist2[count].replace( j, from.length(), to );
}
}
result << static_cast<int>( static_cast< unsigned char >( ch ) );
std::vector< unsigned char > tmp( text.begin(), text.end() );
struct ToUnsignedChar
{
unsigned char operator()( char ch ) const
{
return static_cast<unsigned char>( ch );
}
};
std::transform(
text.begin(),
text.end(),
std::ostream_iterator<unsigned int>( result, " " ),
ToUnsignedChar() );