私は C++ に慣れていないので、crackme のソースを調べていたときに、短い -223 または
foo = 0xde;// 222
unarfoo = ~(foo);// -223
文字「!」に変換されていました。このコード行を実行すると...
cout << (char)(~(foo));// outputs "!"
ascii は char に負の数を使用しないため、これは明らかに ascii 変換ではありません。Java で負の short/int を char に変換しようとしたとき、これは C のコンパイルに限定されたものだと思います。得たのは「?」です。
正確に何が起こっているのか、そしてその理由について詳しく説明できる人はいますか? とても有難い!