![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは
今本来バイナリーとしてダウンロードすべきファイル(hogehoge.tar.gz)を
ASCIIモードでftpで取得してしまいました。
元ファイルを消してしまったので、今はそれをgz+tarで解凍しようとしても
エラーが出てしまいます。
このファイルをASCII ->binaryファイルに戻す方法はないでしょうか?
(多分改行コードや、文字コードを変換すればいいと思うのですが・・・)
シェルスクリプトでも、プログラムでもLINUX、WINDOWS、MACで動くものなら
もんだいありません。
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
無理と言えば無理なのですが、場合によっては不可能というわけでも無い。
文字コードまで変換したのなら実質的には無理ですが。例えば、Unix上のftpサーバーからWindowsへダウンロードしたとすると、0x0A というバイトが、0x0D 0x0A と2バイトになります。なので、0x0D 0x0A という並びを探して 0x0A に直せば良い。
ただ、ftpソフトによって元データに 0x0D 0x0A という並びがあった時に 0x0D 0x0D 0x0A にしてくれるのか、0x0D 0x0A のままにするのか両方ありそう。もし後者なら大変。
逆のWindows→Unixは大変。0x0A というバイトがあった場合にそれは元々 0x0A であった場合もあれば、0x0D 0x0A という2バイトであった場合もある。ファイル中に 0x0A が100個あれば、元は何だったか、2の100乗パターンの可能性があるので、全パターンを試せばどれか当たりです。実質無理。
文字コード変換までしていた場合には、逆に変換すれば大部分は大丈夫ですが、不正な文字コードと判断された部分は変換されなかったりするはずなので、元がどうだったのかは、膨大な組み合わせパターンになると思います。実質無理。不正な文字コードが削除されたり、「?」に置き換えられたりする仕様なら原理的に復元不可能になりますね。
ということで、もし、Unix/Linux→Windowsであったのなら、
Unix/Linuxで、
perl -e 'undef $/;$_=<STDIN>;s/\r\n/\n/g;print;' <inputfile >outputfile
で変換してみて、いければラッキー。だめならあきらめる。
No.5
- 回答日時:
他の方もおっしゃっていますが不可能です。
もし可能であるならftpサーバにASCIIモードでputして
バイナリモードでgetすればいいですよね。
でもできないでしょ?
No.3
- 回答日時:
>今本来バイナリーとしてダウンロードすべきファイル(hogehoge.tar.gz)をASCIIモードでftpで取得してしまいました。
ダウンロードしたファイルは元のものと一致しませんので、正しい方法(binary)でダウンロードし直してください。
>このファイルをASCII ->binaryファイルに戻す方法はないでしょうか?
ASCIIファイルは途中にEOF(End Of File)があるとそれから後は読み込まずに終了します。
Binaryファイルはファイルサイズ通りに取り込みますので元のファイルと同じです。
従って、コード変換だけではダウンロードしたファイルを修正できません。
No.2
- 回答日時:
>多分改行コードや、文字コードを変換すればいいと思うのですが・・・
それは、論理的に不可能です。
プログラムは「変換後のバイト並びがあったら、変換前のバイト並びに入れ替える」という物になるでしょう。
もし、バイナリファイルの中に「元々、変換後のバイト並びと同じ並びの物があった」場合、変換をしてしまうと「変換後のバイト並びのまま変更しなくても良いのに、変換前のバイト並びに入れ替えられてしまう」と言う事が起きます。
具体例を出すと、以下のようになります。
例:
「こっちこい、こっちこい、いけのこい」と言う文章を考えます。(こっち来い、こっち来い、池の鯉)
うっかり間違って、「こい」を「いけ」に変換してしまったとします。
文章は「こっちいけ、こっちいけ、いけのいけ」になります。
元に戻そうとして「いけ」を「こい」に再変換します。
文章は「こっちこい、こっちこい、こいのこい」になります。
どうです?元に戻りましたか?戻ってないですよね?「こいのこい」になってるの判りますか?
このように、うっかりバイナリファイルをASCII変換してしまうと、逆変換を行っても、元に戻す事は不可能なのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Google Drive 【Googleドライブ】ドライブ上内でのフォルダ移行について 4 2022/11/30 12:50
- フリーソフト Windowsの特殊文字を削除や変換したい そんなフリーソフトはありますか? 3 2022/11/09 00:05
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
免許証をPDFでメール送信
-
『.MD2』の画像ファイルを『.JP...
-
エクセルからビットマップへ
-
エクセルからワードへの変換
-
OASYS→Word変換
-
エクセルの複数シートをまとめ...
-
Access97からACCESS2000への変更
-
excelのxlam形式からxlsm形式に...
-
Access97からAccess2013に変換
-
FPXファイルからJPEGに変換する...
-
MS-DOS変換について教え...
-
セブンイレブンのマルチコピー...
-
Macで使用していた外付けHDDの...
-
エクセルからPDFファイルに変換...
-
Excelのファイルの形式の変換に...
-
csvファイルをjpgファイルに変...
-
容量の大きいzipファイルの解凍...
-
ゲームMODのpakファイルを開けない
-
右クリック→新規作成→圧縮(zip...
-
○○.7z.001~●●.7z.003という圧...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
免許証をPDFでメール送信
-
エクセルからビットマップへ
-
エクセルからワードへの変換
-
『.MD2』の画像ファイルを『.JP...
-
JPEG→JPGに変換したい。
-
紙の内容をEXCELに変換する方法
-
Macで使用していた外付けHDDの...
-
OASYS→Word変換
-
エクセルの印刷をjpgにしたい
-
EXCELを使ってSYLK→EXCEL変換
-
FPXファイルからJPEGに変換する...
-
XPSをJPGに変換するには?
-
エクセルファイルの変換方法について
-
VisioのファイルをPDFに変換
-
excelのxlam形式からxlsm形式に...
-
WAB形式に変換したいです。
-
MS-DOS変換について教え...
-
Access97からAccess2013に変換
-
JPEGの色空間について
-
拡張子IDJについて
おすすめ情報