バイナリーデータを文字列に変換する方法とは?

このQ&Aのポイント
  • バイナリーデータを文字列に変換したい場合、System.Text.Encoding.GetStringを使用する方法が一般的ですが、うまくいかない場合もあります。
  • 他の方法としては、Bas64という方法がありますが、これはバイナリーデータをテキストに変換するものではありませんので注意が必要です。
  • 質問者は、SJISの30というデータを文字列に戻したい場合にどうすれば良いのかがわからず、ネットで調べても解決策が見つからなかったため、質問を投稿しました。
回答を見る
  • ベストアンサー

【デコード】バイナリーデータを文字列にしたい。

いつもお世話になっています。 いろいろ調べたのですが、これといった回答が見つからなかったので質問させて頂きます。 今回も皆様の知恵をお貸し下さい。 環境 Microsoft Visual Studio .NET 2003 WindowsXP Microsoft .NET Framework 1.1 表題にも書きましたが、バイナリーデータを文字列として変換したいです。 System.Text.Encoding.GetStringを使用しようとしましたが、思うようにいきませんでした。 他の物が何かないかとネットで調べ、Bas64と言うのが引っかかりましたが、これは全く違うものでした。 例:SJISの30というデータを文字列に戻したい場合にどうすればよいのか。 行き詰ってしまいましたので、質問した次第です。 宜しくお願い致します。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

> 例:SJISの30というデータを文字列に戻したい場合にどうすればよいのか の『30』というのは 10進数で30ということですか? それだと コントロールコードなので文字として表示するのは特殊な環境が必要になりそうです 16進数の &h30ということなら dim ar() as Byte = { &h30 } dim ss as String dim ch() as Char = { " " } System.Text.Encoding.GetEncoding(932).GetDecorder().GetChars(ar, 0, 1, ch, 0 ) ss = New String( ch ) といった具合で変換出来ますよ

kazuhisa01
質問者

お礼

回答ありがとうございます。 記述漏れ、申し訳ありませんでした。 redfox63様の言う通り、30というのは16進数です。 教えて頂いたコーディングで試してみたところ問題なく期待した値が返信されました。 コーディングの解釈としては16進数を10進数に変換してそれをChar型でデコードすると言う形ですね。 これで先に進めそうです。 ありがとうございました。

関連するQ&A

  • バイナリデータで表示or再生するにはどうしたらいいか

    WindowsAPIで画像ファイルや音楽ファイルをバイナリデータとして読み込んで表示、再生するにはどうしたらいいでしょうか?MCI関係やLoadImageを使ってやるとなるとファイルを指定したりリソースとして取り込まないと表示されないと思うので質問しました。 プラットフォームはMicrosoft Visual Studio.NET2003です。  よろしくお願いします。

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

    がわかりません。 例えば >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)までの数値で表したものを連ねたもので なおかつ、文字コードなどの解釈を一切行わなずに、バイト値のみが記述されたデータと おもってもよいのでしょうか?

  • バイナリデータの編集

    バイナリデータの編集を行おうとしています。 バイナリエディタ等を使用すれば編集はできるのですが、一文字ずつ(1バイトずつ)編集するのに苦労しています。 エクセルの機能を使って文字列(バイトの列)を編集し、一括で貼り付けたいと思っています。 何か良い方法がありますでしょうか?

  • バイナリデータの取り方

    VB6を使用して、バイナリファイルをバイナリデータとして文字列にとりたいのですが、全角文字が絡んだ時の処理がうまくいきません。 バイナリファイルをString型の変数に丸ごと読み込んで、後は何バイトから何バイト目を抜き取り数値に変換…という処理をしようとしています。 本来は、バイナリでファイルをオープンして、Getコマンドで取得するのが手っ取り早いのですが、ファイルアクセス回数を減らすため、このような面倒な方法をとっております。 そこで仮に、 dim test as string dim i as integer test = "aあ" & chr(1) & "0 " For i = 1 to 6 Debug.Print Asc(Strconv( _ MidB(Strconv(test,vbFromUnicode),i,1), _ vbUnicode)) Next のようなソースを作ってみました。(本来は文字列は数100KByte…) しかしながら、この方法ですと上の例では2Byte目、つまり「あ」の文字の1Byte目が「&H00」になってしまいます。その次は「&HA0」、他の箇所も問題ないのですが… おそらくは根本的に違う方法で解決すべきではないかと思うのですがその方法がわかりません。 なお、この格納データはバイナリデータなので、意図的に全角文字にしていくてもその値によって(偶然)全角文字になったり制御文字になったりしますので前もって全角文字に対する処理は難しいと考えてます。 質問の仕方が良くなく、質問の内容がなかなかご理解いただけないとは思いますが、ご存知の方、ご経験者の方、ご教授お願いいたします。

  • シリアル通信でのバイナリデータの送受信方法

    visual studio 2008 c++ を用いて 0x00~0xFFの任意のバイトをシリアル通信で送受信するプログラムを書いています。 0x00(NUL)を含んだ文字列は、文字列処理関数では処理出来ないので、以下のようにプラグラムを書くと文字列の最後を示すのに NULL を使っている処理系なので、文字列として読み込みをしているため,NULLで止まってしまいます。 -------------------------------------------------------- 略 DWORD dwWritten; char sendBuf[32]={0}; sendBuf[0] = 0x02; //02 STX sendBuf[1] = 0x00; //00 長 sendBuf[2] = 0xC0; //C0 取得コマンド sendBuf[3] = 0x10; //10 取得コマンド sendBuf[4] = 0x03; //03 ETX sendBuf[5] = 0xD0; //D0 Sum WriteFile(hComm, sendBuf, 6, &dwWritten, NULL); //hComm 指定ポート, 略 -------------------------------------------------------- そこで,送信データをバイナリデータとして扱う関数を使う必要があると思います。 ただ,いろいろ調べたのですが,バイナリデータとして読み書きする関数が分からず困っています。 そのため,バイナリデータとして扱う関数とその使用例を教えていただきたいです。 プログラム初心者のため,問題解決のために必要なコードや情報が不足していることがあるかと思います。 その際にはご指摘いただきたいと思います。

  • DBD::Pg-1.49 のバイナリ

    Postgres SQL との連携のプログラムを動かしたいのですが、DBD::Pg がセットアップできずに困っています。 ReadMe を見ると Microsoft Visual Studio .NET 2003 と Microsoft Visual C++ Toolkit 2003 でコンパイルが必要みたいなのですが、その環境が私のパソコンにはありません。 DBD::Pg-1.49 のバイナリをお持ちの方はいますか?

    • ベストアンサー
    • Perl
  • POST文字列が化ける(外字)

    以下の環境で、システムを開発しています。 OS = Windows2000 SP4 Apache = 2.0.58 PHP = PHP 5.1.6 magic_quotes_gpc = Off mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; このような設定で、コードはSJISで書いています。 外字エディタで外字が登録してあります。 この外字をフォームから、POSTで受取たいと思っています。 さきほども似たような内容で質問しました。 その後、いくつか分かったことがあるので、質問しなおします。 POSTする文字列が、 ・外字一文字の場合 ・先頭が外字の場合 は、化けないことが分かりました。 つまり、なんらかの文字列の間に文字列が入ると化けるのです。(化けないこともあります。)たぶん周りの文字を巻き込んでしまうのだと思います。 何か解決方法に心あたりないでしょうか?

    • 締切済み
    • PHP
  • バイナリデータを文字に変換して圧縮もしたい

    あるバイナリデータのバックアップを印刷したいと考えています。 元のバイナリデータが2MBぐらいあるのでそれをZIP圧縮して1MBでそれをbase64で文字列に変換すると 2MBぐらいの文字列になってしまい 印刷すると150ページでした。 金庫にしまうにしても150ページでは多いのでなんとか10ページぐらいに抑えたいです。 そこで考えたのですがbase64の要領で日本語の文字列に変換することができれば印刷枚数を減らせるかと思うのですが そういった圧縮を行うライブラリってないものでしょうか? 容量は減らなくてもいいので 印刷のページ数を減らしたいです。 base64が64文字に対し日本語の文字列は5万文字?あるので大幅に減らせそうですし 小学生で習う漢字レベルだけでも1文字の情報量が100倍以上になるのでうまくいくのかなぁ?っと。 ちなみにバックアップするものは秘密鍵のような物で もちろん暗号化してクラウド等オンラインでもバックアップをしていますが 非常に重要な物のため万が一に備えて紙でも印刷して残しておき いざというときに復元できるようにしたいです。 復元する際はOCR使って さらに目視でデータ確認で数時間とか数日かかるとしても 復元したいと思うレベルのデータです。 環境はVisualStudioでC#で組もうかと思っていますが 変換と復元作業ができれば環境は問いません。 いいライブラリやアルゴリズムがあれば教えてください。 あるいは日本語文字でなくても QRコードのように印刷した紙から一定のアルゴリズムでデコードできればなんでもいいのでよろしくお願いいたします。

  • PHPのバイナリ型文字列の取り扱いについて

    お世話になります。 PHPについて困っている事がありまして、ご質問させて頂きます。 現在標準入力でバイナリ型とアスキー型の混ざった文字列を 受け取り処理をするコーディングをしているのですが ------------------------------------------------ FFFF1B ------------------------------------------------ ※FFFF(バイナリ型:2byte)1B(アスキー型:2byte) 上記の文字列を標準入力し、以下のコードを実行すると $fp = fopen("php://stdin", "rb"); $contents = fread($fp, 4); echo $contents; --------------------------------------------- 出力結果 ---------------------------------------------                FFFF _______________________________________________________________________ と表示され、FFFFはバイナリ型なので2バイト(だと思うのですが、、) なのに、php上では4バイトと認識されてしまいます。 どこかおかしい所があればご指摘頂きたく思います。 また、勘違いしている点があれば是非ご指摘くださいます様 宜しくお願いします。 大変お手数ですが宜しくお願いします。

    • ベストアンサー
    • PHP
  • フォルダーの中にあるファイルのバイナリデーターの検索を行えるソフトを探

    フォルダーの中にあるファイルのバイナリデーターの検索を行えるソフトを探しています。 環境はwindowsXPです。 フォルダーの中にあるファイルに含まれる特定のバイナリデーターを検索するソフトウェアを探しています。 ファイルを特定のバイナリエディターで開けば検索機能を使って検索できますが、ファイル数が多い場合すべて検索するのは大変です。一度に検索できるソフトはないでしょうか? 文章に含まれる文字列を探すのではなく、例えばexeファイルの中にある文字列を検索する場合バイナリデーターとして検索したいということです。できれば、アスキーかユニコードか指定できるとうれしいです。 文字検索ではなく16進数などで指定して検索でもかまいませんので知っている方は回答よろしくお願いします。