将十六进制字符串转换为十六进制整数
Convert a hex string to a hex int
我必须将十六进制字符串转换为十六进制整数,如下所示:
color = "0xFF00FF" #can be any color else, defined by functions
colorto = 0xFF00FF #copy of color, but from string to integer without changes
我也可以有RGB格式。
我不得不这样做,因为这个函数在 :
之后
def i2s int, len
i = 1
out = "".force_encoding('binary')
max = 127**(len-1)
while i <= len
num = int/max
int -= num*max
out << (num + 1)
max /= 127
i += 1
end
out
end
我看到 here 存在十六进制整数。有人可以帮我解决这个问题吗?
首先,整数永远不是十六进制的。每个整数都有一个十六进制表示,但那是一个字符串。
要将包含带 0x
前缀的整数的十六进制表示形式的字符串转换为 Ruby 中的整数,请对其调用函数 Integer
。
Integer("0x0000FF") # => 255
您需要为 String#to_i
方法提供整数基参数:
irb> color = "0xFF00FF"
irb> color.to_i(16)
=> 16711935
irb> color.to_i(16).to_s(16)
=> "ff00ff"
irb> '%#X' % color.to_i(16)
=> "0XFF00FF"
2.1.0 :402 > "d83d".hex
=> 55357
我必须将十六进制字符串转换为十六进制整数,如下所示:
color = "0xFF00FF" #can be any color else, defined by functions
colorto = 0xFF00FF #copy of color, but from string to integer without changes
我也可以有RGB格式。
我不得不这样做,因为这个函数在 :
之后def i2s int, len
i = 1
out = "".force_encoding('binary')
max = 127**(len-1)
while i <= len
num = int/max
int -= num*max
out << (num + 1)
max /= 127
i += 1
end
out
end
我看到 here 存在十六进制整数。有人可以帮我解决这个问题吗?
首先,整数永远不是十六进制的。每个整数都有一个十六进制表示,但那是一个字符串。
要将包含带 0x
前缀的整数的十六进制表示形式的字符串转换为 Ruby 中的整数,请对其调用函数 Integer
。
Integer("0x0000FF") # => 255
您需要为 String#to_i
方法提供整数基参数:
irb> color = "0xFF00FF"
irb> color.to_i(16)
=> 16711935
irb> color.to_i(16).to_s(16)
=> "ff00ff"
irb> '%#X' % color.to_i(16)
=> "0XFF00FF"
2.1.0 :402 > "d83d".hex
=> 55357