• ベストアンサー

CPU依存によりバイナリが違う

tullioの回答

  • tullio
  • ベストアンサー率20% (11/53)
回答No.2

ぅ~ん... エンディアン問題のことではないのですか? ビットが逆になるということでしたら,練習だと思ってC言語でチャッとフィルターを書いてみてはいかがでしょうか. 1バイト読んでは全ビットを並び替えるだけです.

amu
質問者

お礼

はい。あのあと調べて「バイトオーダー」とか「エンディアン」と呼ばれるものだと言う事がわかりました。途中にchar型なども混在するかなり面倒なデータなのですが、フォーマットはわかっているので地道にやることにします。初心者だとキーワードがわからなくて検索しても引っかからないことが多いです。そういったキーワードヲ教えていただけるだけでも非常に助かります。どうもありがとうございました。

関連するQ&A

  • バイナリファイルなのですが・・・。

    研究用のデータを受け取ったのですが、テキストではなくバイナリファイルでもらいました。データを取得した人によると、↓にある装置を使って時系列データをintel86系バイナリフォーマットで記録したと言っていました。 http://www.sonysms.co.jp/j/products/datarecorder/pdf/SONY_PCscan3_jp.pdf どうにかしてこのバイナリファイルをテキストに変換して、データを取得したいのですが、どうしたらよいのでしょうか? ネットにあるバイナリ→テキスト変換ツールを使いましたが、16進数の数字が羅列されるだけで、エクセルなどで読めるデータ形式にはなりませんでした。

  • float型のバイナリデータ表示するGUI

    Windowsでfloat型のバイナリ(IEEE754)データ表示できるフリーのGUIツールありますか? テキスト型(XML)とバイナリ混ざったファイルがあって、もっているツール(HexEditorNeo)使って読もうとするとXMLの分はきれいに表示されますが、バイナリの分は化けます。 ツールの設定の問題か、HexEditorNeoがfloat型のバイナリに対応していないのか、分かりません。 ご存知の方、教えてください。 よろしくお願いします。 ※WindowsではそのようなツールがないのであればLinux用でもよいです。

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

    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」、他の箇所も問題ないのですが… おそらくは根本的に違う方法で解決すべきではないかと思うのですがその方法がわかりません。 なお、この格納データはバイナリデータなので、意図的に全角文字にしていくてもその値によって(偶然)全角文字になったり制御文字になったりしますので前もって全角文字に対する処理は難しいと考えてます。 質問の仕方が良くなく、質問の内容がなかなかご理解いただけないとは思いますが、ご存知の方、ご経験者の方、ご教授お願いいたします。

  • VisualBasic6.0 バイナリでの読み書き

    VisualBasic6.0(AccessVBA)でバイナリ形式(EBICDIC)のファイルを読み書きしようとしています。 その際に以下の問題が発生してしまい原因が分からずに悩んでおります。 ■問題  ファイルの読み込みはファイルのサイズ(バイト数)分を一気に読込ます。  その後、VB側で1レコード(128バイト)単位に分割してファイル出力(PUT)しています。  このPUTを行うと、ファイルの先頭4バイトに(08001200)と出力されてしまいます。  この4バイトが出力される原因が分からず悩んでおります。 どなたかご存知の方がいらっしゃいましたらご回答いただけると助かります。 参考にバイナリエディタのキャプチャを添付いたします。 以上です。

  • バイナリデータの書込みについて

    こんにちは、初めまして。 さっそくなんですが、バイナリデータの操作を行っていて、ちょっと気になることがあり、質問させて頂きます。 現在あるバイナリデータファイルの読出しには成功し、一応思った通りに書込み、 そのデータは壊れず、読み出せたんですが・・・。 そのバイナリデータファイルは当然のように、アスキー型や文字型、ビッグエンディアンのshortやlongがバイト長ごとに入り混じってます。 アスキー型や文字型は問題なく読み書きできるんですが、 ビッグエンディアンのshortやlongを書き込む時、バイト長を指定してやると、データが壊れてしまいます。 例えば、2バイトのビッグエンディアンのshortを読み出して、そのままリスト値に変換をかけ、なにも加工することなく、再びバイナリ構造体に変換しても、データが壊れてしまいます。 例 失敗) INは読み出すファイル、OUTは書き込むファイル read (IN,$dataB,2); $dataA = unpack("n2",$dataB); $dataB2 = pack("n2",$dataA); print OUT $dataB2; 現在、packするときに、データ長をしてせず、*とすることでデータの書込みには成功してる(ちゃんと読めるデータとして)んですが、これから先、こういったデータを加工して書き込む場合、データ長を指定せずに書き込むというのは・・・。ちょっと嫌な感じです。 例 成功) INは読み出すファイル、OUTは書き込むファイル read (IN,$dataB,2); $dataA = unpack("n2",$dataB); $dataB2 = pack("n*",$dataA); print OUT $dataB2; 何が原因なのか、わからず困っています。 なにぶん素人なもので、やってること自体間違っているのかもしれませんが、どなたか御回答頂ければ幸いです。 ここに書いている質問の意図がわからない等、ありましたらその旨お答え頂ければ、私の知る限りお答えしようと思いますので、どうか宜しくお願い致します。

    • ベストアンサー
    • Perl
  • LinuxはM/BやCPUを変えても動く?!

    認証の制限があるマイクロソフトのWindowsとちがって、LinuxならM/BやCPUを変えてもそのまま動くとか聞いたのですが本当でしょうか。 CPUをインテルからAMDに変えても問題なく動くとか。

  • 数GBのバイナリファイルの確認

    HDD を人に譲るために DBAN というツールでデータを上書きしました。 ハードディスクの内容を安全に消去 - DBAN http://www.atmarkit.co.jp/fsecurity/rensai/securitytips/024dban.html ちゃんとデータが上書きされているか興味もあったため、HDD を dd でファイルに出力したところ、6.4 GB 程度ありました。 このファイルをバイナリエディタ Stirling で確認しようと思いましたが、 ファイルサイズが大きいためかエラーを出力して落ちてしまいました。 このような数 GB 以上のバイナリデータを確認する場合、どんな方法が 一番ベストでしょうか。ファイルを分割して、分割したファイルを バイナリエディタで確認するぐらいしかないでしょうか。 よろしくお願いします。

  • VBA バイナリ―から文字列にする方法

    この度はお世話になります。 現在、バイナリ―ファイル(xxxx.bin)をVBAで読み込み、バイナリ―データを文字列化して、エクセルで解析できるようなシートを作っています。 バイナリ―ファイルの中身が31 39 32 31 ・・・・・となっていたら、31393231・・・と文字列化にしたいです。 そこで、自分でプログラムを考えてみたのですが、バイナリ―が 01 などの場合、など“1”として読み込まれて、“0”が入らず、ずれてしまいます。 Sub 電文解析プログラム() Dim Deciphering_file As Variant '読み込みファイル Dim buf As Byte '1バイト格納 Dim fLen As Long 'ファイルサイズ Dim TEMP(1) As String ' Dim S_JIS As String '文字コード(2バイト) Dim str As String '文字列データ Dim i As Long Deciphering_file = Application.GetOpenFilename("BINファイル(*.bin),*.bin") fLen = FileLen(Deciphering_file) Open Deciphering_file For Binary As #1 For i = 1 To fLen Get #1, i, buf S_JIS = Hex(buf) If buf = 0 Then S_JIS = "00" End If TEMP(0) = Mid(S_JIS, 1, 1) TEMP(1) = Mid(S_JIS, 2, 1) str = myChr & TEMP(0) & TEMP(1) Next i End Sub ホントは3行くらいで済みそうな気がするんですが、あまりプログラミングをやったことありません。なので、すみませんがご教授お願いいたします。

  • バイナリ シリアル化とは?

    バイナリ シリアル化 シリアル化は、オブジェクトの状態をストレージ メディアに格納するプロセスとして定義することができます。 このプロセスの実行中に、オブジェクトのパブリックおよびプライベートなフィールドとクラス (クラスを格納しているアセンブリを含む) の名前がバイト ストリームに変換され、 データ ストリームに書き込まれます。続いてオブジェクトが逆シリアル化され、 元のオブジェクトの完全な複製が作成されます。 VB.NET 学習58日目の初学者です。 還暦を迎えたデザイナでプログラマではありません。 ですから、この説明が難解で訳がわかりません。 D:\Tem\T1.bin   ・・・・ 」kWindowsApplication23,Version1.0.0.0, Culture=neutral, PublicKeyToken=null|  ->WindowsApplication23.Test1」 |o| _Member1|o| _Member2  [ _] T1.Member1] T2.Member2 と、こういうイメージのバイナリファイルが作成されていりことはわかります。 が、私の理解はここまで。 上記の MSDN ライブラリを私にもわかるように手短に説明していただければ幸いです。

  • CPUとマザーボードの関係? CPU高スペック、マザー劣

    インテル 860chipset(400Mhz FSB) XEON2.4用に XEON 2.8 533MHzをつけても問題ないでしょうか? 逆にCPUは低スペックな場合も知りたいです。 因みにソケットは同じとしてです。