hexdump 的なもの
なんとなく、知っているものをだらだらと。しかし、どいつもこいつも endian を指定できないのが悲しい。
hexdump
まぁ、正直にいうと使いにくい。1バイト単位で16進出力なんてのがやりたければフォーマット文字列を指定しないとできないのだが、このフォーマット指定文字列が難しい。
例えば、16バイトごとにアドレスを出力しながら、1バイト単位で16進出力、なんかだとこうなる。
% hexdump -e '"%07_ax" 16/1 " %02x" "\n"'
「"%07_ax"」 でアドレスを7桁16進で出力、「16/1 " %02x"」というのは1バイトずつ読み込んで、" %02x" で出力を16回繰り返し、「"\n"」は改行の出力。まぁ、分かりにくい。Ruby で書くとこんな感じ。
addr = 0 until ARGF.eof? printf '%07x', addr 16.times do data = ARGF.read(1) break unless data printf " %02x", data.unpack('c').first addr += 1 end printf "\n" end
ややこしい代わりに、出力の制御は高機能。あと endian は多分マシン依存。
od
デフォルトでは8進出力、-x だと2バイト単位で16進出力。フォーマットの指定は hexdump と比べると遥かに簡単。
od -t x1
shinh さんは
od -A x -t x1z
らしい。
面倒なので、あとは man で。
xxd
vim についてくるやつ。個人的には一番良く使うのはこれ。
デフォルトでは2バイト単位で16進出力だが、1バイト単位にしたければ
xxd -g 1
とすればよい。でも、2バイト単位でも big endian なのであまり問題なかったりする。
hexja
よさそうだけど、使ったことは無い。日本語を含むテキストを dump することが多い人はいいかも。
fibonacci
fibonacci = lambda integer: (None if ((type( integer ) != int) or (integer < 0)) else (1 if integer <= 2 else (fibonacci( integer - 1 ) + fibonacci( integer - 2 ))) )
なんか、こういうコードがクールだと思う時期ってあるよね。
まぁ、それはそれとして、
- パラメータが不正なときは例外投げたほうがよくね?
- 型チェックするなら isinstance(integer, int)。せめて type(integer) is int じゃね。
- integer = 0 のときは?
- integer なんて名前つけるくらいなら n でよくね?
ニコニコ動画メンテナンス
なんか、ニコニコ動画のメンテナンスがどんどん延長されているね。
中の人は今頃大変なんだろうなぁ。そして、広告枠の方は大丈夫なんだろうか。