- - PR -
Process.StandardInputでバイナリデータ【26】が渡せない
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-05-09 19:32
初めまして、お世話になります。
バイト配列で0から255を設定して、 exeにバイナリデータが渡される事を確認しようとしています。 exeはC++で作成し fread(buf, 1, 255, stdin); で読み取っています。 しかし「26」の所で、freadの戻り値が0になってしまい、 読み取れませんでした。 試しに「26」を「0」と変換して渡すと。 0〜255すべて読み取れました。 StandardInputに設定できていないのか? と思ったのですがBinaryWriterで設定した値は0〜255まで全て書き込めていましたので、 渡すときのstreamは問題ないと思っています。 状況がわかり難いと思いますが、 ご教授願います。 | ||||||||
|
投稿日時: 2008-05-09 19:58
26 は(16進数ではなく)10進数なのですよね。これは Ctrl-Z に相当する文字です。これをただのバイナリーデーターとして読み込むためには、fopen 時にバイナリーモードを指定します。 http://www.google.co.jp/search?hl=ja&q=fopen+%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%BC%E3%83%A2%E3%83%BC%E3%83%89+rb&lr=lang_ja | ||||||||
|
投稿日時: 2008-05-09 20:11
unibonさん、返信ありがとうございます。
stdinは標準入力ですので、 fopenの必要は無いと思います。 stdinをバイナリモードで開く必要があるという事でしょうか。 また調べてみます。 | ||||||||
|
投稿日時: 2008-05-09 20:12
stdinということはfopen()は使えませんので、_setmode()について調べるといいかと思います。
stdin _setmode | ||||||||
|
投稿日時: 2008-05-09 20:15
スフレさん、返信ありがとうございます。
_setmodeでバイナリモードに変換ですね。 実践してみます。 | ||||||||
|
投稿日時: 2008-05-09 20:42
解決しました!
_setmode( _fileno( stdin ), _O_BINARY ); でバイナリモードに変換してから、 読み込むと「26」の箇所も読み取れました。 皆さんありがとうございました。 |
1