如何把任意字符转16进制?

如何把任意字符转16进制?

string = "1234ab"
chars=string.scan(/../)
chars.each {|char| print char.to_i.php?name=to_s" onclick="tagshow(event)" class="t_tag">to_s(16)," " }

学了三天ruby,尝试写字符串转16进制,结果写到这再也写不下去了,这个代码有很多问题呀。
一是只能两位两位的取,二是碰到字符都转成0了,转数字没问题。谁来改进一下?
print char.to_i.to_s(16)
-->
print char.to_i(16).to_s(16)

两位两位的取可能是scan(/../), 你打了两个.了
--------------------------------------
碰到不确定的方法, 你可以用ri查一下它的用法, 如:
ri String.to_i

 我对vbs较熟,像vbs字符串转16进制函数是下边这样的。
Function Str2Hex(ByVal strHex)
Dim sHex
For i = 1 To Len(strHex)
 sHex = sHex & Hex(Asc(Mid(strHex,i,1)))
Next
Str2Hex = sHex
End Function

“abcd”会转为61626364
现在我想如何用ruby做到
ruby单个字母转换可以用puts ?a.to_i.to_s(16)来表示,这样a就转为61了。我想一下转一串,只是这样的一个想法。

[ 本帖最后由 lcx 于 2008-4-11 16:27 编辑 ]


[Copy to clipboard] [ - ]
ruby单个字母转换可以用puts ?a.to_i.to_s(16)来表示,这样a就转为61了。我想一下转一串,好比一下转abcd,转成61626364。
哈哈,多谢5swords,我明白了。哎,学习时间太短,很多东东不知。以后就跟着5swords老大混了。
我也刚学, 相互学习.

刚才那个函数名Str2Hex让我搞混了. 这和16进制太没关系了.


[Copy to clipboard] [ - ]
bbschat的正解.
再反转一下,嘿嘿
string = "61626364"
chars=string.scan(/../)
chars.each {|char| print char.to_i(16).chr}