あおきです。
ruby 1.8.0 2003-03-20 で
sprintf('%02x', ?\n) == "fa"
になります。以下の部分を戻したらとりあえず直りました。
Index: sprintf.c
===================================================================
RCS file: /home/aamine/cvs/ruby/ruby/sprintf.c,v
retrieving revision 1.31
diff -u -p -r1.31 sprintf.c
--- sprintf.c 20 Mar 2003 06:27:13 -0000 1.31
+++ sprintf.c 20 Mar 2003 15:35:20 -0000
@@ -556,9 +556,8 @@ rb_f_sprintf(argc, argv)
}
}
else {
- char c = sign_bits(base, p);
while (len < prec--) {
- buf[blen++] = c;
+ buf[blen++] = '0';
}
}
PUSH(s, len);
元の意図を汲むのは面倒そうなのでパス (^^;;;
-------------------------------------------------------------------
青木峰郎