C#でzipファイルの16進数文字列をバイナリにして出力
zipファイルのバイナリをテキストダンプした後で
解凍して中身を取り出したい場合のサンプルコード。
以下の例では結果をD:\test.zip として出力する。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace unzipTextBinary { class Program { static void Main(string[] args) { // zipファイルの先頭の0xを除外した16進数文字列(半角スペース区切りと仮定) string s = "50 4B 03 04 0A 00 00 00 00 00 0A 97 82 45 AA E2 67 8C 1C 00 00 00 1C 00 00 00 08 00 00 00 74 65 73 74 2E 74 78 74 82 B1 82 EA 82 CD 0D 0A 83 65 83 58 83 67 0D 0A 83 74 83 40 83 43 83 8B 82 C5 82 B7 50 4B 01 02 14 00 0A 00 00 00 00 00 0A 97 82 45 AA E2 67 8C 1C 00 00 00 1C 00 00 00 08 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 74 65 73 74 2E 74 78 74 50 4B 05 06 00 00 00 00 01 00 01 00 36 00 00 00 42 00 00 00 00 00"; // 文字列をバイナリに変換 int i, j; int len = s.Length / 3; byte[] bs = new byte[len+10]; j = 0; for (i = 0; i < len; i++) { bs[i] = Convert.ToByte("0x" + s.Substring(j, 2), 16); j += 3; } // 出力 System.IO.FileStream fs = new System.IO.FileStream( @"D:\test.zip", System.IO.FileMode.Create, System.IO.FileAccess.Write); fs.Write(bs, 0, bs.Length); fs.Close(); } } }
test.zip を解凍すると、test.txt が出てきて、中身は以下の通り。
これは テスト ファイルです