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

Ruby: Converting Hexadecimal Strings to Hexadecimal NON-string (edited)

最近,我一直在网上搜索将十六进制字符串转换为十六进制实际值的方法。例如,"0xffffffff" -> 0xffffffff。加载 JSON 文件(无法直接存储十六进制)后,存储的整数值 4294967295 通过使用以下示例代码成功转换回 "0xffffffff"

hex_str = "0x" << 4294967295.to_s(16) #--> "0xffffffff"

真正令人沮丧的是,我似乎找不到 Ruby 方法来重新创建十六进制值而不是 String 数据类型...我真的希望我没有忽略任何东西。我使用非字符串十六进制的原因是将它们用于 Gosu 着色符号。我不想使用 Gosu 的 Color class(输入 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>