とにかくこれを行う方法について何か考えがありますか?
私が持っているとしましょう
char x[] = "ABCD";
そして私はそれをintに入れたいので、
int y = 'ABCD';
個々の文字を入力することしかできません。たとえば、int y = x[0];
目的は10進表現を見つけることですが、「A」だけでなく「ABCD」の10進表現が必要です。
最後sprintf(dest, "%.2u", value);
に、charの10進表現を取得するために使用します。
編集:
理由はわかりませんが、「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 **:
前回の編集サムを試しましたが、それでも機能しません。私が取得している値は、正しい値の「683212470」ではなく、「4294967294」です。私もこれをしました
int h1 = '(';
int h2 = '¸';
int h3 = 'þ';
int h4 = '¶';
出力:
40
-72
-2
-74
完全なASCIIテーブルをグーグルで検索したところ、「þ」の値は「254」であることがわかりました。私はそれがこれと関係があると思います...私もusignedで試しましたが、良い結果はありませんでした。
edit3:(各文字の10進表現で置き換えればconst char *x = "(¸þ¶"
、int x[] = {40, 184, 254, 182};
機能します。どこで問題が発生するかは理解できますが、修正方法がわかりません。