下記参考リンクにもあるアロワナさんのpythonコードを使って違法素数ファイルを作ってみた。
ファイルは元号使用数ランキングで使ったxlsxファイルを使った。
ファイル名だけはgengou.xlsxにしたが、それ以外は同じだ。
raw.binに変換できない。sedが、悪さをしているようだ。
こうなったら力技だ。sedを使わず書きだして、Excelで強引に右側を消した。
その後、空白部分がTabになっていたので、それを置換で埋めた。
エンコードできない。どうやら、数列として扱ってくれないようだ。
Pythonは、Javaのように関数の型にうるさいわけではない。なぜだろうか。
よくファイルを見返したら、「.」が一個だけ残っていた。消した。
表示されない。Python4300桁問題のようだ。
コマンドプロンプトで「set PYTHONINTMAXSTRDIGITS=0」と打ち込むことで回避した。
次に生じた問題はTerapad8000文字問題だ。普段よりTerapadを愛用している私にとっては死活問題だ。
メモ帳なら開けた。100780列とのことだ。
サクラエディタならコピペできた。
calc.pyを読み込んだら、固まった。これだけの大きい数だ、無理難題なのだろう。
試しにbの値をprintするようにしたが、5で固まった。
wolframくんも機能しないし、WinPFGWも稼働しない。見切れている。
手動でやろうにも、こんな大きい数、256を掛けるだけでも一苦労だ。
cmdで直接掛けてもらおうと思ったが、無理そうだ。
pythonコードで無理やり計算させることはできた。
一回復号させてみたら、ファイル名が違ったようだ。
もう一度sedに挑戦した。
シングルクオーテーションをダブルクォーテーションにしたら、全部消失したものの動きはした。
「xxd -b test.c.gz | cut -d: -f 2 | sed 's/[^01]//; s/ //g' > raw.bin」にしたら、ゴミは残るもののある程度はうまく消えた。
しかし、うまくencodeができない。
「xxd -b test.c.gz | cut -d: -f 2 | sed "s/ (空白2回).*//; s/ //g"
> raw.bin」で、うまく行った。
htmlの都合上、空白を2個連続は無理なためだ。
これでやっとできたファイルが、これだ。
(続く)