鄭です。

String クラスの、hex メソッドは、0x が前置された16進数文字列に
適用してはいけないのでしょうか?

以下のようなスクリプトで動作を確認しようとしたところ

  while carg = ARGV.shift
    printf("0x%x == %d \n", carg.hex, carg.hex);
  end

以下の結果になりました。
(ruby 1.1b5 で試しました。前のメールのシフト演算も 1.1b5 です。)

% ruby arg.rb 1 10 100 1000 10000 100000  1000000  10000000  100000000
0x1 == 1 
0x10 == 16 
0x100 == 256 
0x1000 == 4096 
0x10000 == 65536 
0x100000 == 1048576 
0x1000000 == 16777216 
0x10000000 == 268435456 
0x100000000 == 4294967296 

% ruby arg.rb 0x100 0x1000 0x10000 0x100000 0x1000000 0x10000000 0x100000000
0x100 == 256 
0x1000 == 4096 
0x10000 == 65536 
0x100000 == 1048576 
0x0 == 0 
0x0 == 0 
0x0 == 0 

                         ┌─鄭  明毅───────────────────┐
                         └──tei / harmony.co.jp──tei / mirage.linc.or.jp─┘