将十六进制值分配给字节的低半字节

时间:2017-06-09 11:08:50

标签: ruby encoding hex byte nibble

我正在进行集成,我对字段有以下条件:

  

如果数据长度为奇数,则为最后一个字节的低半字节赋值为十六进制“F”。用于填充的十六进制“F”确保字段使用了整数个字节,并且不包括在项目的长度中。

我尝试附加十六进制F,但这是错误的:

MainViewController

我想我需要获取最后一个字节并对其执行一些魔术,可能是一些按位操作:

data << "%X" % 15

如果有人能指出我正确的方向,我会很高兴。

1 个答案:

答案 0 :(得分:3)

1的二进制表示形式为1。方便的是,这是OR的所有1,并且确保位为1的简单方法是OR0b1111。因此,确保半字节中的所有位为0xF的简单方法是15 / OR / 0的半字节{/ 1}。

访问单个半字节通常很不方便,但幸运的是,还有一种简单的方法可以确保它保持原状:OR它与0b0000。因此,为了确保字节的第一个半字节保持原样,我们需要0xF OR第一个半字节,并确保最后一个半字节为0b1111,我们需要OR0b00001111

综上所述,我们需要0x0F整个最后一个八位字节0b1111 / 0xF(只有data.bytes.last |= 0xF / .remove):< / p>

>>> a = [1,3,4]
>>> a.remove(1)
>>> a
[3, 4]