无论如何有任何想法如何做到这一点?
假设我有
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*/);
但是,如果我使用“(¸þ¶”),我不会得到相同的结果。
编辑2 **:
我已经尝试了你最后一次编辑 Sam,但它仍然不起作用。我得到的值是“4294967294”,而不是正确的值“683212470”。我也这样做了
int h1 = '(';
int h2 = '¸';
int h3 = 'þ';
int h4 = '¶';
输出:
40
-72
-2
-74
我搜索了完整的 ascii 表,发现“þ”的值为“254”。我想这与此有关...我也尝试过使用 usigned 但没有好的结果。
edit3:如果我替换const char *x = "(¸þ¶"
为int x[] = {40, 184, 254, 182};
(每个字符的十进制表示,它可以工作。我可以理解哪里出了问题,但我不知道如何解决它。