石川です。

>なかだです。
>
>At Mon, 27 Nov 2000 16:11:44 +0900
>Junya Ishikawa <ishikawa / osa.shq.jri.co.jp> wrote:
>> ruby-1.6.1で、sprintfを使って、数字に前0をつけてある固定長に変換しよう
>> とすると、変換前の数字が0で始まっている場合、期待どおりの変換を行なっ
>> てくれません。
>
>  0 で始まってると 8 進数と見なされるってことだと思いますが、

なるほど。8進数に思いが至りませんでした。。。ruby-1.4.6では、"0x0f"を
%dで変換しても、0にしかならないのですが、ruby-1.6.1では"0x0f"をsprintf
の%dで変換すると、0x0fと同一視してくれるようです。数値リテラルと同一表
現の文字列が数値リテラルと解釈されているので、こちらの方が自然な動作な
のかも。ただ、

> そもそもString に %d を指定しようってあたりがおかしいような気が
> します。

と、いわれてみれば、確かにおっしゃるとおりです。

>printf "%07d\n", "0123".to_i
>0000123

こうするのがよさそうです。ありがとうございました。


  _/ (株)日本総合研究所 情報システム部 _/  TEL:06-6534-5367
 _/   石川淳也 (ISHIKAWA, Junya)      _/   FAX:06-6534-5328
_/ mailto:ishikawa / osa.shq.jri.co.jp _/    内線:923-2361