【发布时间】:2013-11-03 01:17:56
【问题描述】:
我有一个设备,我有一些用户在 GUI 中设置的值,例如 630 330 等。我需要将这些值传递给 I2C 字节。 583 将是十六进制位中的02 47。这将是 2 个字节的变量,我需要调用 Set(byte lower ,byte upper),因此需要将 int 或 double 值转换为 2 个字节。
我试过了:
ushort R1x = (ushort)Rx;
byte upper = (byte)(R1x >> 8);
byte lower = (byte)(R1x & 0xff);
我需要的是lower = 47,upper = 02。
这是给lower = 0 和upper = 247 ..我可以知道我做错了什么
【问题讨论】:
-
为
ushort Rx = 245 * 256 + 130;尝试过,效果很好。也许给额外的代码? -
我没听懂你说的。我实际上错过了逻辑。
-
您从 16 位值中获取高位和低位 8 位的方法是正确的,但您仍然弄错了
lower和upper,IMO 有一些关于R1x的意外情况价值。 -
您可以删除
& 0xFF。转换为字节只保留最后 8 位,因为一个字节只有 8 位... -
“我需要的是lower = 47和upper = 02。” - 我对此表示怀疑。这将意味着十进制拆分,这在低级协议中非常不寻常。