Ruby字节数组转换为十六进制字符串

Python013

Ruby字节数组转换为十六进制字符串,第1张

str = "Ruby"

str.split(//).each {|e|print (e.unpack('H*').to_s + "\n")}

#irb

# 52

# 75

# 62

# 79

# =>["R", "u", "b", "y"]

好了 首先是第一步转成16进制: icon = "22 12 41 2 1 8 43 211 42"# =>"22 12 41 2 1 8 43 211 42" icon.split.map {|i| i.to_i.to_s(16) }# =>["16", "c", "29", "2", "1", "8", "2b", "d3", "2a"] 然后是你说的格式化(不太明白你的意思,不知道是不是个位数前面要补0的意思): icon.split.map {|i| i.to_i.to_s(16) }.map { |s| s.size == 1 ? s.insert(0, "0") : s}# =>["16", "0c", "29", "02", "01", "08", "2b", "d3", "2a"] 最后拼起来: icon.split.map {|i| i.to_i.to_s(16) }.map { |s| s.size == 1 ? s.insert(0, "0") : s}.join=>"160c290201082bd32a"

二进制转换为16进制的方法如下:

1、取二进制数。

2、将二进制数字分成四组(从右开始)作为整数部分,从左开始作为小数部分。

3、以四个数字为一组分组,将每组转换为相应的十六进制数字。

4、这是一个简单的算法,但是需要将二进制数分组并把分组替换为与它们等价的十六进制数字。

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。

当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用1来表示“开”,0来表示“关”。

16进制(简称hex或下标16),在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a-f)表示,其中A-F表示10-15。

16进制普遍应用在计算机领域,因为将4个位元(Bit)化成单独的16进制数字不太困难。1个字节(Byte)可表示2个连续的16进制数字,但这种混合表示法易混淆,因此需要一些字首、字尾或下标来区分。