4

我有一个十六进制值(0x0020004E0000 ...这是硬件地址的基地址)。我需要将 0x04 添加到每个寄存器的基数。我一直在这样做,首先将基地址转换为以 10 为基数的数字,然后将 4 添加到该值。然后我通过字符串类 .to_s 和 .to_i 将总和转换回十六进制。

有没有更好的方法来做到这一点,所以我不会一直在 base 10 和 base 16 之间来回转换?(仅供参考,在我之前的 AppleScript 脚本中,我将十六进制数学添加到操作系统并让 bc 为我处理添加)。

4

3 回答 3

9

0x0020004E0000 + 0x04

或者干脆

0x0020004E0000 + 4

于 2012-06-20T17:55:50.870 回答
2

Ruby 中有四种表示整数值的方法

64        # integer
0x40      # hexadecimal
0100      # octal
0b1000000 # binary

# These are all 64.
于 2012-06-20T20:58:01.600 回答
0

一个数字就是一个数字,不管它是如何在内部表示或向用户显示的。只需像添加任何其他号码一样添加它们。如果您想稍后它们视为十六进制,那很好;格式化它们以输出。

您将表示与价值混淆了。Ruby 可以解析以十六进制表示的数字,就像解析十进制、二进制或八进制值一样。

0x04 (Hex) == 4 (decimal) == 100 (binary)

都是一样的。

于 2012-06-20T18:04:45.190 回答