簡體   English   中英

將字符串轉換為無符號整數

[英]Converting string into the unsigned 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結果而不會弄亂它嗎? 也許還有其他可能性可以實現我想要的?

您的IDE正在輸入編碼為UTF-8的字符。 我通過從您的數字輸出中進行反向®_ďÚ.J.®—M驗證了這一點,它產生了®_ďÚ.J.®—M 順便說一句,調用ASCII根本不准確。

您的輸出窗口正在使用其他編碼。 從外觀上看,它是代碼頁1250中歐/東歐

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM