将字符串转换为无符号整数

时间:2014-04-12 01:44:16

标签: c++ string encoding integer

我使用以下代码将字符串转换为整数:

int main(){
const char* mystring="abcdefghijklmnop";

unsigned int* key = (unsigned int*)mystring;
for(int i=0;i<2;i++) {
     std::cout << i << ": " << key[i] << std::endl;
}
std::cout << std::endl << "Result for:" << mystring << std::endl;
}

结果:

0: 1684234849
1: 1751606885
2: 1818978921
3: 1886350957

Result for:abcdefghijklmnop

正如您所看到的,它的工作非常好,但直到编码不同的时刻,例如。对于字符串:®_ďÚ.J.®—Mf3Lý!®(ASCII)(参见下面的Result for:

It returns:

0: 3294604994
1: 781894543
2: 2931961418
3: 1301577954

Result for:®_ÄŹĂš.J.®—Mf3LĂ˝!® // <-- notice this, its totally different as the input (`®_ďÚ.J.®—Mf3Lý!®`)

我正在尝试在我的IDE(Netbeans)中设置编码,但没有任何可能的结果,我也试图编译到ideone.com上的源代码,设置浏览器编码 - 遗憾的是结果相同。是否有可能根据输入字符串编码生成real结果而不会搞砸它?也许还有其他可能实现我想要的东西吗?

1 个答案:

答案 0 :(得分:1)

您的IDE正在输入编码为UTF-8的字符。我通过从您的数字输出向后工作验证了这一点,它生成了®_ďÚ.J.®—M。顺便说一句,调用ASCII根本就不准确。

您的输出窗口使用不同的编码。根据它的外观,它是code page 1250 Central/Eastern European