代码之家  ›  专栏  ›  技术社区  ›  Mike Berrow

使用ruby将存储为带符号的无符号整数转换回原始值

  •  2
  • Mike Berrow  · 技术社区  · 17 年前

    一个C程序正在将它认为是64位无符号整数的内容放入类型为int8的Postgres数据库的一列中。 对于Postgres来说,int8总是“signed int8”(没有“unsigned int8”这样的东西)。 因此,我的Ruby程序将从Postgres检索到的数字显示为负数。

    在Ruby中,采用-ve整数并将其转换为64位的正确方法是什么 C程序员想要的整数?

    2 回复  |  直到 17 年前
        1
  •  5
  •   Artelius    17 年前

    仅供参考,2的补码系统,本质上它将(比如)32位数字视为mod 2^32的数字。这意味着-1与2^32-1或0xFFFFFF相同。事实证明,这在硬件级别上非常容易使用。

        2
  •  5
  •   Uberbrady    15 年前

    这可能会奏效:

    x += 0x1_0000_0000_0000_0000 if x < 0