反正有任何想法如何做到這一點?C++焦炭轉化爲int多字符常量
比方說,我有
char x[] = "ABCD";
,我希望把它變成一個int,因此我不得不
int y = 'ABCD';
我只能把單個字符,如int y = x[0];
目的是找到十進制表示,但我想「ABCD」的十進制表示不只是「A」。
最後我會用sprintf(dest, "%.2u", value);
得到字符的十進制表示。
編輯:
我不明白爲什麼,但對於「ABCD」這個代碼工作
//unrolled bit ops
const char* x = "ABCD";
uint32_t y = 0;
y |= (uint32_t(x[0]) << 24); //MSB
y |= (uint32_t(x[1]) << 16);
y |= (uint32_t(x[2]) << 8);
y |= (uint32_t(x[3]) /*<< 0*/);
然而,每個實例如果我使用「(¸þ¶」我沒有得到同樣的結果。
EDIT2 **。
我試過上次編輯山姆,但它仍然不工作我得到的值是「4294967294」,而不是「683212470」的正確值 我也做這個
int h1 = '(';
int h2 = '¸';
int h3 = 'þ';
int h4 = '¶';
輸出:
40
-72
-2
-74
我GOOGLE了完整的ASCII表,我發現,對於「TH」的值是「254」。我想這與此有關......我也嘗試過使用但沒有好的結果。
EDIT3:如果我有int x[] = {40, 184, 254, 182};
(每個字符的十進制表示更換const char *x = "(¸þ¶"
,它的工作原理我能理解不如意的事情,但我不知道如何解決它
看看[這裏](http://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer) –
使用位移和按位或(和適當大小的無符號類型)。 –
爲了防止你在程序中使用''(¸þ¶「'',它會中斷,因爲最後三個字符是多字節字符。編譯器應該吐出警告。這個問題涉及如何將特殊字符放入一個字符串文字:http://stackoverflow.com/q/2420780/1175253 – Sam