Javaには、妙なメソッドがあるなぁ。
文字を扱うCharacterクラスに、十六進数の文字を数値に変換(あるいは逆変換)するメソッドがあった(苦笑)
(数字かどうか判断するメソッド(関数)ならC言語にもあるけどね)
こんなのあまり使い道があるとも思えない(ヘキサダンプならHexDumpEncoderが便利だし)けど、Javaのは“全角文字の数字”でも数字として認識してくれるし、変換してくれる。
もっとも、漢数字(一や壱)やローマ数字(Ⅰ)や機種依存文字(①)はやっぱりダメだったけど(爆)
Javaでバイト配列の内容を出力(hex dump)したいなーと思って、そういうメソッドが無いかjavadocを調べたんだけど見当たらない。
自分で作るのは簡単だけど、面倒は面倒だし。
と思っていたら、暗号を試している最中にCipher#getParameters()をSystem.out.println()で出力したときにIVの値がヘキサダンプされているのに気付いた。
これはどうやってるんだろう?と思って調べたら、HexDumpEncoderというクラスを使っていた。これが正に探していたものだ!(嬉)
ついでに、ByteArrayInputStreamとByteArrayOutputStreamについてもメモ。
Javaでは部分配列を使うのはC言語に比べて面倒(新しい配列を作ってコピーするしかないので効率悪すぎ)だけど、見た目はこれらのクラスを使うことですっきりする。
FileInputStream・FileOutputStreamにも簡単に置き換えられる(というかポリモルフィズムでそのまま使える)ので綺麗。
とは言え、実行効率がよくなるわけではないよなー…。
-kkvでコミットされているファイルを単純にcvs diffすると、キーワード展開された値が違う場合にそこで差異が出てしまう。(普通のソースファイルなら、-kkvの状態でコミットされてるもんだが)
でも、cvs diffにもkオプションを指定できることを初めて知った!
これで「キーワード展開しない(-kk)」を指定すれば、キーワード部分は同じ文字列になるので差異が出ない。