掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ビックエンディアンするには? (ID:52678)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になっております。 KENです。 サイトを駆け巡りまして一応動作するようになりました。 YuOさんのおっしゃっていたunsigned charについては、 すいません・・・ 何が何だか理解ができなかったです。 C++初めて1週間なので・・・申し訳ございません。。。 アルゴリズムについては参考にさせて頂きました。 ありがとうございます。 一応動くようにはなりましたけど、ここで質問があります。 ファイルサイズからバッファサイズを指定したいのですけど どのようにしたら良いのでしょうか? BUFFER_SIZEを20MBで指定して実行を行うとアドレスエラー? らしきものが出て困っております。 実際の運用では20MBファイルを扱うのでどうにかして バッファのサイズを可変したいと思っております。 ご教授よろしくお願い致します。 以下がソースコードです。 ------------------------------------- #include <windows.h> #include "BigEndian.h" #define BUFFER_SIZE 100000 //100KB ← ココの部分 DWORD BigEndian(LPCTSTR lpFileName1) { HANDLE hFile1, hFile2; DWORD dwRead1; DWORD dwFileSize1, dwFileSize2; DWORD i; BYTE FileData[BUFFER_SIZE]; BYTE A[1], B[1]; hFile1 = CreateFile( lpFileName1, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile1 == INVALID_HANDLE_VALUE ){ CloseHandle( hFile1 ); return NOT_EXIST_FILE1; } hFile2 = CreateFile( "test.bin", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile2 == INVALID_HANDLE_VALUE ){ CloseHandle( hFile1 ); CloseHandle( hFile2 ); return NOT_EXIST_FILE2; } dwFileSize1 = GetFileSize( hFile1, NULL ); dwFileSize2 = GetFileSize( hFile2, NULL ); /* ファイル読み込み */ ReadFile( hFile1, &FileData, BUFFER_SIZE, &dwRead1, NULL ); /* ビックエンディアン */ for( i=0; i < BUFFER_SIZE / 8; i++ ){ A[0] = FileData[2*i]; B[0] = FileData[2*i+1]; FileData[2*i] = B[0]; FileData[2*i+1] = A[0]; } /* ファイル書き込み */ WriteFile( hFile2, &FileData, BUFFER_SIZE, &dwRead1, NULL ); CloseHandle( hFile1 ); CloseHandle( hFile2 ); return SUCCESS; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.