電子書籍の厳選無料作品が豊富!

バイナリデータの取り扱い方法について教えて下さい。
※PCの環境はWindows7(32bit)、バイナリエディタに「Stirling」を使用しております。

あるPDFファイルを、pdftkというツールで解凍した後、
中身を見ようとバイナリエディタで開いたのですが、
その中に「16進表記で変換できる文字列」と、「変換できない文字列」が
混在しているようで困っております。

下記のサイトで、16進数→漢字に変換して確認しているのですが、
http://www.scarfboy.com/coding/unicode-tool?s=U% …

例えば「名前」という漢字2文字だと、
=============================
「前」は「524D」という値になっているのですが、
「名」が「545C72」という値で格納されているようで、
上記サイトでも上手く変換できませんでした。

「名」の16進表記は本来「524D」だと思うのですが、
なぜこのような値になってしまっているのでしょうか。

また、「545C72」→「名」と変換できるような
良い方法はあるのでしょうか。
============================

その他にも、おそらく「)」を表している部分が、
「FF5C74」という値で格納されたりということが発生しております。

いろいろ勘違いがあるかもしれませんが、ご教授お願い致します。

質問者からの補足コメント

  • > 「名」の16進表記は本来「524D」だと思うのですが、
    「540D」の間違いでした。
    Wr5さん、ご指摘ありがとうございました。

      補足日時:2015/05/08 12:10
  • ご回答頂いた方のヒントから自己解決しました。
    (汎用的ではないと思いますが、今回のケースはこれで解決としました。)

    下記リンクのエスケープシーケンスのうち、
    http://ratan.dyndns.info/MicrosoftVisualC++/eska …
    今回バグ(?)として変換されていたのは次の5つでした。
    ====================
    コード  文字列(16進表記)
    0x08 =>「\b」(5C62)
    0x0C =>「\f」 (5C66)
    0x09 =>「\t」 (5C74)
    0x0D =>「\r」 (5C72)
    0x5C =>「\\」 (5C5C)
    ====================

    これを変換表として、ファイル中に出てくる値を
    「545C72」→「540D」→「名」
    「FF5C74」→「FF09」→「)」
    として変換することができました。

      補足日時:2015/05/08 13:45

A 回答 (2件)

>「名」の16進表記は本来「524D」だと思うのですが、


>なぜこのような値になってしまっているのでしょうか。

540Dですね。で、5C72は”\r”。
ということで、変換後のバイナリ(?)が値によっては余計なエスケープが行われているようです。
http://wisdom.sakura.ne.jp/programming/c/Cdata1. …


他にどんなのがエスケープされるか不明ですので、確認は少々キツそうですな。
# ツールのオプションとかで設定できる…かも知れません。
# 無い場合は微妙ですかね……。
とりあえず、事例では0x0D=>"\r"、0x09=>"\t"への変換は食らっているようです。
    • good
    • 0
この回答へのお礼

迅速なご回答と間違いのご指摘ありがとうございました。
ご回答頂いた内容がヒントになり、対処できる兆しが出てきました。
(後ほど質問に補足しておきます。)
かなり悩んでいたので、本当に助かりました。ありがとうございました。

お礼日時:2015/05/08 12:18

PDF ってわかってるんだったら, 「PDF でどう扱うのか」を調べるのが筋なんじゃない?



無駄に「バイナリデータ」に一般化することはないと思うよ.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やりたい事は、PDFの中身のテキストを抜き出したい、ということで、
ruby+nokogiriなどを試してはいます。
その際、この一つのファイルだけ処理中にエラーが出ており、
原因が知りたくて質問させて頂きました。

お礼日時:2015/05/08 12:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!