2009年7月 6日

[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の変換

−−−−−−−−−−−−−−−−−−−

投稿者 xml-rpc : 2009年7月 6日 18:30
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86451
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。