• ベストアンサー

バイナリを16進表現の文字列に変換するには。。

こんにちは。 データベースにバイナリ形式で入っているものを取り出して、16進表現の文字列(テキスト)に直さなくてはなりません。 バイナリを4文字ずつ取り出して、16進数に変えてを繰り返し、繋げてゆけばよいとは思うのですが、具体的な方法がいまいちわかりません。 データベースから取り出すとき、何型の変数に取り出して、どのようにして16進に直せば、効率よく処理を行うことが出来るでしょうか。

noname#744
noname#744
  • Java
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • tshimada
  • ベストアンサー率33% (4/12)
回答No.1

データベースからバイナリフィールドを取り出す方法はわからないのですが、取り出した後は、バイト型の配列に格納し、1バイトずつInteger.toHexStringを使って、16進表現の文字列にしていく方法がわかりやすいと思います。

noname#744
質問者

お礼

ありがとうございます。 ご教授いただいた方法にて、実験してみたいと思います。 今後とも、宜しくお願い致します。

関連するQ&A

  • VB バイナリ文字列へ変換

    VBでバイナリ文字列へ変換を行いたいのですが、どうしたら良いでしょうか?

  • C#で16進バイナリ文字列連結

    C#で16進バイナリ文字列連結 C#にてシリアル通信の勉強を始めたばかりなのですが 早速初っ端の基礎から解らず立ち往生しています。 ushort a=0x0050; byte b = 0x00; byte c = 0xff; ushort d = 0x03ff; byte e = 0x00; ushort f = 0x000c; と16進数値が居ます。 これを、リトルインディアン形式で連結させて 50 00 00 ff ff 03 00 0c 00 という電文にしたいのですが、どうやって繋げたらいいのでしょうか? 今まで"アスキー文字列"を単に繋げて送出したことしかなくて、いざバイナリ形式でやってみようとして うろたえてます。

  • バイト列とバイナリ列の違いが分かりません。

    掲題について質問です。 例えばプログラミングにおける文字列に対して 時々、「文字列はバイト列とみなすことができる。」 という記述を見かけます。 具体的にいうとRuby1.8系における文字列がそのバイト列らしいのです。 例えば、 hoge = "文字列"; print hoge.unpack("C*") とすると [230, 150, 135, 229, 173, 151, 229, 136, 151] というようにUTF-8で符号化された各8bitの0~255までの値の配列が返って来ます。 これはバイト列になるのですか? それとも hoge = "文字列"; print hoge.unpack("H*") ["e69687 e5ad97 e58897"] (それぞれ一文字が1byte3つ分の列となっています。) このように16進数で表された形式がバイト列というあつかいなのでしょうか? そしてバイナリ列とバイト列の違いはなんでしょうか? よろしくご教授ください。

  • バイナリの文字列を変換したい...

    Jpeg のExifを解析するスクリプトを書いてます あるバイナリの文字列を下記の形式に 変換する手段をどなたかご存知ないですか? (そもその下記の意味さえわからないですが) unsigned byte ascii strings unsigned short unsigned long unsigned rational signed byte signed short signed long signed rational single float double float よろしくお願い致します

    • 締切済み
    • PHP
  • バイナリファイル中の日本語文字列の取り出し

    C++にて,バイナリファイル中から日本語の文字列を取り出す処理に苦心しています. 具体的にはPDFファイルのXMPの記述部のXMLに日本語が含まれる場合なのですが,日本語(この場合はUTF-8ですね)の部分が含まれる部分をfread()で読み出してchar[]型の配列に入れて,printfで表示する(漢字コードの変換処理はとりあえずnkf等でUTF-8→SJISに変換)と文字化けします. Javaで同じような処理をしたときは,String の変数にUTF-8で日本語の文字列が挿入され,その文字列を扱うことができたのですが,C++での扱いがわかりません. ご教授よろしくおねがいします.

  • バイナリファイルとバイナリ文字列の違い

    がわかりません。 例えば >http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html をみるとバイナリ列は1バイトを連ねたものだというらしいです。 つまり【文】という文字列を文字コードUTF-8でバイト配列化すると [1] => 230 [2] => 150 [3] => 135 となります。 (これはPHPでunpackかけましたが他の言語のGetBytes()などでも同じバイト値がでました。) この【文】という文字列はバイナリ列になるわけですよね? 例えばこの【文】という文字だけを保存したbun.txtというファイルはバイナリーファイルに なるのでしょうか? バイナリファイルの定義をみると >http://e-words.jp/w/E38390E382A4E3838AE383AAE38395E382A1E382A4E383AB.html 上記URLだと >文字コードの範囲などを考慮せずに作成されたファイル というのがバイナリファイルであるとあります。 つまりバイナリファイルとは 1バイト・・つまり8ビット(0~255)までの数値で表したものを連ねたもので なおかつ、文字コードなどの解釈を一切行わなずに、バイト値のみが記述されたデータと おもってもよいのでしょうか?

  • 文字コードから文字列への変換

    よくわからないタイトルですみません(汗。 標準入力からデータを渡すと、I/Oをしてくれるというモジュールを書いているのですが、当初、テキストのみの設計のつもりだったのが、バイナリを扱うはめになってしまいました。 それで、バイナリはstdinから読めなさそうだったので、0xXYZという文字列にしてからstdin経由で渡そうと思ったのです。 今回の質問は、その文字列で書かれた16進コードを文字に直す方法なのです。 つまり、char buf[80] = "0x414243"という文字列を渡した場合、char buf2[80] = "ABC" という文字列を得たいのです。(0x41="A") 変な希望ですが、何通りか試したのですが、根っからのテキスト処理大好きPerl人間なので、Cの知識の無さに挫折してしまいました。 アドバイスをよろしくお願いいたします。

  • 文字列の変換

    既に確定された文字列を漢字に変換したいのですが。 例 strRei="こんにちはせかい" 上記の文字変数strReiを何らかの処理をして strRei="こんにちは世界" にしたいのです。 ご教示よろしくお願いします。

  • バイナリ5バイトを文字10バイトに変換

    バイナリ5バイトを文字10バイトに変換 いつもお世話になっています。 C++初心者です。 12 34 56 78 90(バイナリ5バイト)を 1234567890(文字10バイト)に変換する方法はありますか? バイナリで読み込んだデータがあり、特定箇所に、数字10桁が格納されてます。 下記イメージです。 12 34 56 78 90(バイナリ5バイト) それを文字10バイトで処理するしたいのですが、変換方法がネットで探せませんでした。 お知恵をお貸しください。 環境はVC++6 です。 よろしくお願いします。

  • Excelでセル内の文字列をバイナリ値として扱う方法はないでしょうか。

    Excelでセル内の文字列をバイナリ値として扱う方法はないでしょうか。 セルに貼付けた(エンコードされている)日本語URLをデコードしたいと思っております。 Unicode文字列はVBAからJScriptの関数を呼び出して対応しましたが、 長期的にはEUC-JPやその他の文字コードもデコードしたいと思っています。 手法は今も調べていますが現時点では、汎用的な関数を自作するしかないと認識しています。 そこで、 ADODB.Streamオブジェクトにバイナリモードでセルの値を書き込んだ後に、 テキストモードで任意のCharsetを指定してみたのですが、 セルの値は文字列として扱われ、バイナリ値として直接書き込めませんでした。 具体的には、EUC-JPでエンコードされた 「%a5%c6%a5%b9%a5%c8(テスト)」という文字列からReplace関数で「%」を除去し、 バイト型配列に代入した時点で、「a5c6a5b9a5c8」という文字列として扱われている という状態です(バイナリ値として入力されませんでした)。 上記以外のアプローチの仕方も含めて模索している状態です。 問題に対する考え方だけでもご指摘いただければと思います。 よろしくお願いします。

専門家に質問してみよう