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