掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ビックエンディアンするには? (ID:52682)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>メモリの確保・解放を自分で行うことでできます。 >malloc/freeとか,new[]/delete[]とか,HeapAlloc/HeapFreeとか。 >C++使っているならstd::vectorが楽です。 > >ただ,今回のような場合はファイルマッピングを使って処理した方が簡単だと思います。 はい! ファイルマッピングについてチェックしておりましたが・・・ 1BYTEの取り出し方(BYTEずつの移動等)が掲載されているサイトが 見つからず断念しました。。。 >スタックをオーバーしたのでしょう。 >VC++のスタックは1MBなので,20MBの自動変数を確保することはできません。 > >ファイル全体を一度に読み込もうとせず, >何回かに分けて読み込むと良いです。 そういう風に書いておりましたが・・・ 読み込み→変換→読み込み→変換→読み込み・・・っと せっかく変換されたデータが消えてしまいます。 そりゃそうですよね・・・ そのまま上書きしてしまうプログラム書いているから・・・ 実際、変換した後、どうやってデータを蓄えてどうすればいいのか? 蓄えたデータをまとめて書き込む方法がわかりませんでしたので 1回で読み込むように書いたのですけど・・・(汗) >INVALID_HANDLE_VALUEをCloseHandleで閉じる必要はないですし,閉じてはいけません。 >INVALID_HANDLE_VALUEはあくまでinvalidなハンドルです。 ご指摘ありがとうございます。修正します。 >せっかくファイルサイズを得たのに, >BUFFER_SIZEで読み込むのは何故? >#まぁ,BUFFER_SIZE > dwFileSize1であっても問題はないのだが……。 バッファサイズが超えたら・・・ エラーになるのかと・・・ すいません・・・ >BUFFER_SIZEで回すのではなく,dwRead1で回すべきです。 ご指摘ありがとうございます。修正します。 >ところで,8で割っているのは何故? i < BUFFER_SIZE で書いて実行したところ・・・ 実行中に・・・ 強制終了(画面が消える現象)が起こりました。 下の変換作業で・・・ アドレスエラーが起こったのかと思い、 BUFFER_SIZE - 1 と書いても上記の現象が起こり、 BUFFER_SIZEのサイズってビットで、 取り出しているのがバイトだから・・・ 8で割ればいいのかと・・・(滝汗汗汗汗汗汗) >BYTE temp; >temp = FileData[2 * i]; >FileData[2 * i] = FileData[2 * i + 1]; >FileData[2 * i + 1] = temp; YuOさんおっしゃっていたこと ぜんぜん参考にしておりませんでした・・・(苦笑) >書き込みサイズはどう考えてもdwRead1だと思いますが……。 >あと,書き込み失敗を考えたほうがよいです。 >#本当は読み込み失敗も。 ご指摘ありがとうございます。修正します。 できてから例外処理を考えております。 まずは動かさないと・・・w もう少しこのソースでがんばってみます! はやく【解決】印を付けるように努めます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.