日本語プログラミング言語なでしこの公式掲示板

なでしこ1 質問

トップ 新規 検索

2021-04-24 17:16:02

ファイルの書き換え

TKI さん

ファイルのバイナリを全部XORで反転させたファイルを作るプログラムを書きました。
ファイルストリームとか使ってとりあえず思った動作にはなりました。
でもなんとなくだらしない感じなので、ちょっと見てやってください。

(経緯  150kbくらいの開けないjpgがあって
 バイナリエディタで見たら00 27から始まっていたので
 とりあえず反転してみようと思った)

#-----------------------------------------------------------------------
//母艦パス&file のファイルを読み込んで 母艦パス&xor のフォルダに書き込む
●XORフィルタ(file)
 書き込み先=「{母艦パス}xor\{file}」
 もし書き込み先の存在が1ならば戻る
 
 母艦のタイトルはfile
 h=(母艦パス&file)を「読」でファイルストリーム開く
 size=hのファイルストリームサイズ
 bin2に1を確保
 h2=書き込み先を「書」でファイルストリーム開く
 
 1でループ
  hのファイルストリーム位置取得
  もしsize<=それならば、抜ける
  1でループ  //…二重ループ
   hのファイルストリーム位置取得
   もしsize<=それならば、抜ける
   
   bin=hで1をファイルストリーム読む
   val=binの0を「BYTE」でバイナリ取得
   val=XOR(val,$FF)
   bin2の0にvalを「BYTE」でバイナリ設定
   h2でbin2をファイルストリーム書く
   もし回数>=65535ならば抜ける
   
 hをファイルストリーム閉じる
 h2をファイルストリーム閉じる

#-----------------------------------------------------------------------

なおしたい部分
・流れに無駄がある気がする。
 ファイルストリーム読む、バイナリ取得、XOR、バイナリ設定、ファイルストリーム書く
 …という工程ですが、楽な方法がありますか

・1バイトずつ処理しているので遅い。
 1度にたくさん処理すれば早い?
 何バイトまで一度にできそうですか

・二重の無限ループ
 65535回を超えると処理が遅くなるので二重にしました
 なにか楽な回避方法はありますか

・その他
 なにかおかしそうな点があればご指摘下さい
 (これは使い捨てプログラムなので汎用性とかはナシで)



(編集パスワード送信)

親記事

この内容(No.1036)に返信

この内容(No.1036)をダウンロード

この内容(No.1036)のテキスト表示

子記事

1045 Re③:ファイルの書き換え (21-05-13) new
1042 Re②:ファイルの書き換え (21-05-06)
1037 Re①:ファイルの書き換え (21-04-25)




www.eznavi.net