红宝石中整数的高/低字节转换

BvuRVKyUVlViVIc7

在将红宝石中的数据从十六进制转换为整数时,我们遇到了一些小问题。

我们得到一个硬件信号,它是整数数据->转换为高字节和低字节,按位取反->字符串。

这是一个例子:

Something between 0 and 75 => will be converted to "0x3938"...

但是,如何将“ 0x3938”转换回75?

我已经尝试过:

"0x3938".to_i(16) => 14648 # wrong results (also with "0x3938".hex)

但这会返回错误的值。

有什么提示吗?我没有得到这个高/低字节分割吗?

编辑:这是一些示例值,所有这些值都应导致0到75之间的整数。计算是使用joelparkerhenderson的答案完成的。

Hex: 0x0000 - calculated integer: 0.0
Hex: 0x0000 - calculated integer: 0.0
Hex: 0x0000 - calculated integer: 0.0
Hex: 0x025d - calculated integer: 186.0
Hex: 0x0ad3 - calculated integer: 203.0
Hex: 0x0fe1 - calculated integer: 135.0
Hex: 0x1508 - calculated integer: 16.0
Hex: 0x1a8a - calculated integer: 81.0
Hex: 0x1f6e - calculated integer: 118.0
Hex: 0x244f - calculated integer: 242.0
Hex: 0x28b2 - calculated integer: 77.0
Hex: 0x2a0a - calculated integer: 80.0
Hex: 0x2aa8 - calculated integer: 21.0
Hex: 0x2ae6 - calculated integer: 103.0
Hex: 0x2add - calculated integer: 187.0
Hex: 0x2adc - calculated integer: 59.0
Hex: 0x2aea - calculated integer: 87.0
Hex: 0x2abf - calculated integer: 253.0
Hex: 0x2a87 - calculated integer: 225.0
Hex: 0x2a4a - calculated integer: 82.0
Hex: 0x2a56 - calculated integer: 106.0
Hex: 0x2a91 - calculated integer: 137.0
Hex: 0x2aee - calculated integer: 119.0
Hex: 0x2b64 - calculated integer: 38.0
Hex: 0x2f41 - calculated integer: 130.0
Hex: 0x32dc - calculated integer: 59.0
Hex: 0x341d - calculated integer: 184.0
Hex: 0x34e7 - calculated integer: 231.0
Hex: 0x35af - calculated integer: 245.0
Hex: 0x369f - calculated integer: 249.0
Hex: 0x377e - calculated integer: 126.0
Hex: 0x3873 - calculated integer: 206.0
Hex: 0x3959 - calculated integer: 154.0
Hex: 0x3a33 - calculated integer: 204.0
Hex: 0x3b4f - calculated integer: 242.0
Hex: 0x3c1b - calculated integer: 216.0
乔尔·帕克·亨德森

这可以为您提供帮助:

def rbit(n)
  r =  0
  8.times{|i| r = r * 2 + n[i] }
  r
end

mark-hubbart的32位整数信用逆序位顺序

或者,如果您更喜欢位运算符,则如下所示:

def rbit(n)
  (((n & 0x01) << 7)
  |((n & 0x02) << 5)
  |((n & 0x04) << 3)
  |((n & 0x08) << 1)
  |((n & 0x10) >> 1)
  |((n & 0x20) >> 3)
  |((n & 0x40) >> 5)
  |((n & 0x80) >> 7))
  n
end

信用反向整数位运算,而无需使用循环paxdiablo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将红宝石中的UTC时间转换为EST(不使用Rails)?

来自分类Dev

红宝石中的<<-是什么?

来自分类Dev

红宝石转换查询与关联到哈希

来自分类Dev

红宝石和铁轨中的资源路线

来自分类Dev

红宝石中的整数变量声明

来自分类Dev

将数组结果转换为红宝石

来自分类Dev

使用以下结构将数组转换为红宝石中的哈希

来自分类Dev

将红宝石中的小时,分钟和秒转换为秒

来自分类Dev

红宝石中整数的高/低字节转换

来自分类Dev

红宝石中的数组更新

来自分类Dev

反射在红宝石中?

来自分类Dev

用红宝石中的\\替换`\`

来自分类Dev

排序红宝石中的数字

来自分类Dev

垃圾收集在红宝石中?

来自分类Dev

红宝石转换查询与关联到哈希

来自分类Dev

从红宝石中的STDIN一次读取四个字节

来自分类Dev

红宝石中的内存分配

来自分类Dev

转换为嵌入式红宝石

来自分类Dev

红宝石中的Trim()方法?

来自分类Dev

在红宝石数组中搜索

来自分类Dev

红宝石中的数组更新

来自分类Dev

澄清红宝石中的常数

来自分类Dev

红宝石中的文件索引

来自分类Dev

在红宝石中跳过日期

来自分类Dev

红宝石中的Haversine公式

来自分类Dev

如何从Rich Text中删除CSS属性以转换红宝石字符串?

来自分类Dev

将卷发转换为红宝石中的开利吗?

来自分类Dev

在红宝石中尝试方法

来自分类Dev

红宝石力对实数的整数除法