文字のバイト列の表示

文字コードを勉強するにあたって、バイト表現が簡単に分かった方が便利だったので。
もう何度も同じようなのを作っているんだけど、改めて。

def print(str, cs)
  str.encode(cs).each_char do |c|
    puts "#{c} : #{c.bytes.map{|b| b.to_s(16).upcase}.join(' ')}"
  end
end

こんなふうに使うと、、

print("あアA", "Shift_JIS")

こんな表示になります。

あ : 82 A0
ア : B1
A : 41


そうそう、rubyサロゲートペア文字もなんのその。ちゃんと文字の長さは1文字って表示されます♪