最近,我一直在努力在线搜索将十六进制字符串转换为十六进制实际值的方法。例如,"0xffffffff" -> 0xffffffff
。加载JSON文件(不能直接存储十六进制(后,使用以下示例代码将存储的整数值4294967295
成功转换回"0xffffffff"
:
hex_str = "0x" << 4294967295.to_s(16) #--> "0xffffffff"
真正令人沮丧的是,如果不是String
数据类型,我似乎找不到一种Ruby方法来重新创建十六进制值。。。我真的希望我没有忽视任何事情。我之所以使用非字符串十六进制,是为了将它们用于Gosu着色表示法。我不想使用Gosu的Color
类(输入rgb值[255, 255, 255]
(,因为当游戏中生成许多矩形quad_draw()
对象时,它会大大降低性能(当绘制600
矩形时,它从60 fps
下降到42 fps
(。当我用十六进制实际值(而不是字符串数据类型(进行硬编码时,程序确实在60 fps
上运行,所以我相信以这种格式使用这些值是可行的。这是我正在寻找的东西:
hex_int = hex_str.some_function_to_hex #--> 0xffffffff
你能分享一种直接将4294967295
转换为0xffffffff
的方法吗?
您可以直接将整数传递给Gosu::Color.new
以创建颜色
3.0.0 :002 > Gosu::Color.new(4294967295)
=> #<Gosu::Color:ARGB=0xff_ffffff>
或Gosu::Color.argb
3.0.0 :003 > Gosu::Color.argb(4294967295)
=> #<Gosu::Color:ARGB=0xff_ffffff>