首页 > 解决方案 > 如何将一个字节分成两部分并读取它?

问题描述

我在给我的任务中遇到了这个问题。情况如下:

在此处输入图像描述

如果用户单击“Vat First”,则值为 0。否则,值为 1。

然后,在这个文本框中,

在此处输入图像描述

允许的值范围是 0 到 15。

然后示例值保存如下:

“01” = 因为它首先是缸和 1mm Z 轴向上高度。

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

"015" = 先瓮,15mm

“115” = 平台优先,15mm

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

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

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

标签: c#winformsinteger

解决方案


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

这是一个简单的位移任务。

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

并节省:

Combined = (Order << 4) | Height;

和是位移运算符<<>>


推荐阅读