From: eiichi_maekawa@... Date: 2009-07-06T18:30:35+09:00 Subject: [ruby-list:46168] Re: 文字から16進への変換方法について 前川です。 るびきちさんの助言で、なんとか、変換処理作りましたが、 もう少し、Rubyらしいコーディングにしたいのですが、 どなたか、ご教示願います。 よろしくお願いします。 るびきちさんの助言======= > # -*- coding: cp932 -*- > "船".each_byte do |byte| > "%#x" % byte # => "0x91", "0x44" > end > String#each_byteでそれぞれのバイトでループします。 > そして、byte(整数)を String#% を使って書式文字列 %#x で 0x〜 に変換しま す。 ===================== 下名が作成したプログラム(SJIS)−−−−−−−−−−− data1 = '船海システムG' # 26バイトの '91448a43835683588365838047'に変換する data2 = 'TEST' # 8バイトの '54455354'に変換する data3 ='船' def textToHexConversion(data) textHex='' byteConversionData = ['a','b','c','d','e','f'] data.each_byte do |byte| "%#x" % byte textHex = textHex + (byte/16).to_s byte2 = byte % 16 if (byte2 > 9) #10以上は、aからfに置き換える textHex = textHex + byteConversionData[byte2-10] else textHex =textHex+byte2.to_s end end return textHex end puts textToHexConversion(data1) # data1の変換 puts textToHexConversion(data2) # data2の変換 puts textToHexConversion(data3) # data3の変換 −−−−−−−−−−−−−−−−−−−