Ruby:将十六进制字符串转换为十六进制NON字符串(已编辑)



最近,我一直在努力在线搜索将十六进制字符串转换为十六进制实际值的方法。例如,"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>

最新更新