我需要帮助,以便在遵循特定协议结构的UDP流中发送带符号的十进制值。发送UDP流简直是小菜一碟,但是将我的带符号十进制数字转换为HEX 24位二进制组成的带符号数字又是另一回事了,因为我不知道该怎么做。
这是该协议中有关我必须发送的内容的说明:
该值以度表示为24位二进制补码有符号数,其中最高有效位(第23位)是符号位,接下来的8位(第22至15位)是整数部分,其余位(第14位至第0位)是小数部分;或者,可以将其视为以1/32768度为单位的有符号整数值。值的范围是从-180.0度(A60000十六进制)到+180.0度(5A0000十六进制)。
我知道我在问很多问题,如果有人可以在VB或C#中发布一段工作代码,我将不胜感激。
您将必须向下游发送三个字节,尽管尚不清楚以什么顺序进行。您还必须确保它在正确的范围内。首先假设MSB:
WriteBytes(decimal value, Stream stream)
{
Int32 intValue = (int)(value * 32768);
byte byte1 = (byte)(intValue & 255);
intValue >>=8;
byte byte2 = (byte)(intValue & 255);
intValue >>=8;
byte byte3 = (byte)(intValue & 255);
stream.Write(byte3);
stream.Write(byte2);
stream.Write(byte1);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句