2021-04-24 17:16:02
ファイルの書き換え
ファイルのバイナリを全部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回を超えると処理が遅くなるので二重にしました なにか楽な回避方法はありますか ・その他 なにかおかしそうな点があればご指摘下さい (これは使い捨てプログラムなので汎用性とかはナシで) |