From: Tanaka Akira Date: 2004-10-02T12:55:46+09:00 Subject: [ruby-dev:24385] "\x80".sum is 65408 次のように、"\x80".sum が 65408 になるのですが、これは 128 じゃないんでしょうか。 % ./ruby -ve 'p "\x80".sum' ruby 1.9.0 (2004-10-02) [i686-linux] 65408 ドキュメントの | sum([bits=16]) | | 文字列の bits ビットのチェックサムを計算します。以下と同じです。 | | sum = 0 | str.each_byte {|c| sum += c} | sum = sum & ((1 << bits) - 1) if bits != 0 という記述に従って計算すると % ruby -e ' str = "\x80" bits = 16 sum = 0 str.each_byte {|c| sum += c} sum = sum & ((1 << bits) - 1) if bits != 0 p sum ' 128 というように 128 になりますし、perl や sum コマンドを使ってもそうなります。 % perl -e 'print unpack("%16C*", "\x80"), "\n"' 128 % ruby -e 'print "\x80"'|sum 00128 1 (sum コマンドは初めて使ったのであまり自信がありませんが) -- [田中 哲][たなか あきら][Tanaka Akira]