代码之家  ›  专栏  ›  技术社区  ›  TerribleDog

如何将一个字节分成两部分并读取它[[副本]

  •  1
  • TerribleDog  · 技术社区  · 7 年前

    情况如下:

    enter image description here

    然后,在这个文本框中,

    enter image description here

    然后将示例值保存为:

    “01”=因为它是vat第一个和1mm Z轴向上高度。

    “11”=平台优先,Z轴向上1mm

    “015”=增值税优先,15mm

    “115”=平台优先,15mm

    之所以这样保存,是因为它是给我的文件协议,我对此无能为力。上面说的值是“平台移动顺序和Z轴上升高度”,单位为1字节。

    我现在的问题是读取结果后重新加载到应用程序。因为int的返回忽略了开头的0,所以我怎么知道它是使用3位还是2位。”015“=“15”,因此我的应用程序可能会将其视为平台优先,5 mm,而不是增值税优先,15 mm。

    编辑:所以我刚刚意识到感谢@BenVoigt,它被保存为一个字节,有8位。根据给我的协议,前4位是移动顺序(0或1),其余的是Z轴向上高度(0-15)。对于真正的问题,如何将字节分为4位并获得值?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Ben Voigt    7 年前

    前4位是移动顺序(0或1),其余的是Z轴向上高度(0-15)。

    这是一个简单的位转换任务。

    Order = Combined >> 4;
    Height = Combined & 0x0F;
    

    和保存:

    Combined = (Order << 4) | Height;
    

    这个 << >> 是位移位运算符。

        2
  •  -1
  •   Joe2112    7 年前

    你能不能把两个结果都做成字符串,然后把它们加在一起作为你的结果?似乎整数类型是你的问题。

    推荐文章