【发布时间】:2012-09-06 12:43:56
【问题描述】:
尝试我在 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, " "));
result.str() 将是 'FFFFFFAF' 而不仅仅是 'AF'
我能做什么?
我的文本可以有多个字符,例如: text = '¯ABCÈ'; // AF414243C8 “转换”后的结果是:FFFFFFAF414243FFFFFFC8。
.
好吧,我用替换解决了它......在这种情况下这不是一个好习惯,但解决了。
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 );
}
}
【问题讨论】:
-
从
char转换为int时看起来像符号扩展(0xaf大于0x7f,因此为负数)。 -
是的,我认为 Hristo 是对的。这里的错误假设是字符是 ASCII 编码的(因为 ASCII 的范围仅从
0x0到0x7f) -
它是扩展的 ASCII。 ascii-code.com
-
@GuilhermeQuelhos:没有“扩展 ASCII”这样的东西。如果您使用超过标准化的 127 个字符代码(该网站提到它是 ISO-8859-1,但还有其他代码),则需要指定编码
标签: c++