- PR -

C#でのバイナリファイル操作

1
投稿者投稿内容
にゃんぎ
常連さん
会議室デビュー日: 2004/03/31
投稿数: 35
投稿日時: 2005-09-01 21:05
C#でのバイナリ操作について教えてください。

現在C++のアプリケーションをC#へコンバート作業を行っています。
C++アプリの中に、バイナリファイルへデータを出力する部分があり、そこをどのようにC#で行うか悩んでいます。

C++ソース
int Code = 37652; //0x9314
fwrite(&Code, 2, 1, FP);//FPはファイルポインタ
バイナルファイルには 14 93と出力される

C#ソース
BinaryWriter bw = new BinaryWriter(FS);//FSはファイルストリーム
int Code = 37652; //0x9314
bw.Write(Code);
バイナリファイルには 14 93 00 00と出力される

intのままでは余分に 00 00 がついてきます。

私自身がバイナリファイルについて知識が乏しいこともあり、思うように進みません。
直接の回答でなくとも、参考になるサイトでもあれば教えていただけないでしょうか。

よろしくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-01 21:32
byte
_________________
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-09-01 21:43
今回の話「だけ」であれば、Int16 でいいのでは?

おっと、UInt16か。

[ メッセージ編集済み 編集者: にしざき 編集日時 2005-09-01 21:44 ]
未記入
会議室デビュー日: 2005/08/21
投稿数: 15
投稿日時: 2005-09-01 21:57
はじめまして
C#のint型は4バイトだからでは?

C++のほうは、2バイト書き込みをされているようですし
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-09-01 22:59

取りあえずBinaryWriter.Writeの様々なオーバーロード
にゃんぎ
常連さん
会議室デビュー日: 2004/03/31
投稿数: 35
投稿日時: 2005-09-02 09:51
おはようございます。

>Jittaさん
intをbyte型に変更すれば良いということでしょうか。

>にしざきさん
Int16だとうまくいきました。
Uint16でもやってみます。

>未記入さん
そのようです。
2バイト変数に変換して実行するとうまくいきました。

>Hongliangさん
参考にさせていただきます。

とりあえず今回の仕様はInt16を使えば出来そうです。
皆様ありがとうございました。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-09-02 13:47
引用:

とりあえず今回の仕様はInt16を使えば出来そうです。



コード:
int i = 37652;
Int16 i16 = (short)i;
Console.WriteLine("i16 = {0}",i16);



すみません、追加で質問なんですが、上記のコードのようにしてみると、
最初にセットした「37652」ではなく「-27884」と表示されてしまいます。
どこか間違っているのでしょうか?


なんて事にならないように。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
1

スキルアップ/キャリアアップ(JOB@IT)