« Return to Thread: [ruby-list:46146] 文字変換

[ruby-list:46168] Re: 文字から16進への変換方法について

by 前川 映一 :: Rate this Message:

Reply to Author | View in Thread

前川です。

るびきちさんの助言で、なんとか、変換処理作りましたが、
もう少し、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の変換

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


 « Return to Thread: [ruby-list:46146] 文字変換