No.1
- 回答日時:
SunOSとLinux(Intel)のマルチプラットホームに対応しているアプリケーションならアプリケーション自体が変換に対応しているはずなんですが。
ファイルフォーマットがわかっているのであれば標準コマンドのddで変換できることがあります。
ただ、あまりに複雑なフォーマットは無理です。
man 1 dd
フォーマットが複雑ならperlなどでスクリプトを作ったほうが早いかもしれません。
全部で512バイトのヘッダと数百MBのデータ部とが有ります。ヘッダ部はビットフィールドも駆使するなどかなり複雑なので、自分でルーチンを作ることにします。
すぐに教えていただきありがとうございました。
No.2
- 回答日時:
ぅ~ん...
エンディアン問題のことではないのですか?
ビットが逆になるということでしたら,練習だと思ってC言語でチャッとフィルターを書いてみてはいかがでしょうか.
1バイト読んでは全ビットを並び替えるだけです.
はい。あのあと調べて「バイトオーダー」とか「エンディアン」と呼ばれるものだと言う事がわかりました。途中にchar型なども混在するかなり面倒なデータなのですが、フォーマットはわかっているので地道にやることにします。初心者だとキーワードがわからなくて検索しても引っかからないことが多いです。そういったキーワードヲ教えていただけるだけでも非常に助かります。どうもありがとうございました。
No.3ベストアンサー
- 回答日時:
Big Endian (Sun) と Little Endian (Intel) の問題ですね。
toysmith さんのいうように、ファイルのフォーマットに依存する
と思います。非常に単純に short のデータが並んでいるだけとか、
long が並んでいるだけなら、
#!/usr/local/bin/perl
while (read(STDIN, $long, 4) == 4) {
print join('',reverse(split('',$long)));
}
という簡単なスクリプトで変換できます。double とか float も同
じです。
しかし、いろんなサイズのバイナリデータが混在してたり、文字が
入ってたりすると、自分で変換プログラムを作る必要があります。
そうはいっても、読むプログラムがあるわけですから、何らかの規
則で並んでいるはずで、上のスクリプトを適当にいじれば作れるで
しょう。
あと考えつくのは、データは変換せずに、Linux 側のプログラムを
改造して、SunOS の方式で書かれたデータをそのまま読めるように
してしまうことです。
例えば、
long endianswaplong(long l)
{
int i;
long tmp;
for (i=0; i<sizeof(long); i++) {
((char*)&tmp)[i] = ((char*)&l)[sizeof(long)-i-1];
}
return tmp;
}
というような関数(群)を作って、読むたびに変換してから利用す
ればいいのです。(動かしてないので、バグがあるかも)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) exFATの外付けSSDからパソコンのNTFSの内蔵ストレージにコピーした場合はコピーしたデータのハ 2 2023/08/09 19:51
- その他(コンピューター・テクノロジー) この用途で快適に使うにはどのくらいのスペックのパソコンを買うべきなのでしょうか? ・100ギガのデー 4 2023/07/20 19:50
- その他(コンピューター・テクノロジー) なぜデータの整合性を確認する時はハッシュ値で確認するのでしょうか?ハッシュ値は衝突する可能性があるの 5 2023/07/05 20:38
- その他(コンピューター・テクノロジー) パソコンは同時に作業をすることが出来るらしいですが以下の動作の全てを同時にすることも可能なのですか? 5 2023/07/22 11:20
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- ドライブ・ストレージ CPU Intel core i7 4790 マザー H97-PLUS メモリ DDR3 16GB 4 2023/07/27 00:28
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- CPU・メモリ・マザーボード pcの質問です。電源を入れると起動してすぐ消え、その3秒後にまた起動するようになりました。 3 2023/06/10 19:49
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- ビデオカード・サウンドカード メイン機とは別に、初自作としてpcを組みました。 pcスペック cpu ryzen5 5500 グラ 1 2023/05/15 12:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
std::stringからLPCWSTR型への変換
-
S-JIS → JIS コード変換するには
-
EBCDICへの変換
-
ふりがなをアルファベット化す...
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
ExcelVBA実行後に時々落ちる
-
Symfowareでのデータ型変換につ...
-
10進数→2進数への変換
-
COBOLによる全角・半角混...
-
フォームのコントロールのバッ...
-
VS 2008(VB.NET)
-
%fと%gについて
-
COBOLのデータ型
-
ビット反転(Not)が機能しない
-
画像データ(png)をcsvファイル...
-
コード変換ライブラリについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
std::stringからLPCWSTR型への変換
-
VS 2008(VB.NET)
-
ExcelVBA実行後に時々落ちる
-
ふりがなをアルファベット化す...
-
Excelマクロにて30分単位の計算...
-
英数字を含む文字列(0-9,A-Z)...
-
Symfowareでのデータ型変換につ...
-
JIS → S-JIS コード変換するには
-
sedで日本語の置換方法について
-
COBOLによる全角・半角混...
-
フォームのコントロールのバッ...
-
数字5桁文字コード?
-
バイナリデータ→ASCII 変換プ...
-
2バイト文字をJEFからSJISに変...
-
CString ←→ BSTRの変換について
-
VBScript ASC関数:文字エンコ...
-
入力した文字を全て自動で全角...
おすすめ情報