2

このタイトルは紛らわしいかもしれません。まだ解決できていない簡単な質問があります。

ファイルがあり、Hex Editor で開くと、0x1B0x00などの 2 つの文字が含まれていることがわかります(明らかに印刷できません)。間違っている文字を直接変換するのではなく、HEXの1B00DECの6912と見なしたいと思います。これは、私が見た他のすべての質問が尋ねたものです。さて、それが私がここでやりたい仕事です。簡単に思えますが、私が試したことはすべて間違っています! 明らかにファイルをバイナリモードで開いていますが。

私は文字を個別に読み取ることができただけで、少しいじりましたが、実際にやりたいことは決してしませんでした.

不明確な考えで申し訳ありません。私はネイティブ スピーカーではありません。どんな助けでも大歓迎です。これは非常に初歩的な質問だと思うでしょう:P

編集:申し訳ありませんが、どうやら私は自分自身を適切に説明していませんでした。これは抽象的なように思えるかもしれませんが、解決するのに苦労している本当に具体的な小さなことですが、解決できていません. 多分私はそれを別の方法で尋ねることができます:

バイナリモードで文字をスキャンするにはどうすればよいですか0x1Bと言って、それを実際の1B文字に変換します。それだけ。

4

3 に答える 3

0
std::ifstream infile("test.bin", std::ofstream::binary);

while (true) 
{
    char c1 = ifs.get();
    if (!infile.good())
    {
        break;
    }

    char c2 = ifs.get();
    if (!infile.good())
    {
        break;
    }

    int num = (int)c1 |((int)c2 << 8);

    // if you need the oppisite order then
    // int num = (int)c2 &((int)c1 << 8);
    cout << num;
}
于 2013-07-17T23:24:03.603 に答える