如何将带符号的十进制转换为十六进制的24位二进制补码带符号数

MadeByVince

我需要帮助,以便在遵循特定协议结构的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

十六进制转换为二进制和十进制转换器

将带符号的二进制转换为十进制,八进制和十六进制

如何将十六进制切片转换为带二进制补码的浮点数

在Swift中在十进制,二进制和十六进制之间转换

如何将8位二进制数据转换为十六进制

将原始的14位二进制补码转换为带符号的16位整数

在Python中将二进制表示形式转换为带符号的64位整数

如何将带符号整数格式化为可识别符号的十六进制表示形式?

将任意长度的带符号十六进制数字转换为带符号十进制数字(Excel)

Python中带符号的十六进制缩写的带符号的十进制

如何从十六进制转换为十进制以及从十进制转换为二进制

如何在python中将16位十六进制和二进制表示形式转换为十进制浮点数(反之亦然)?

将十进制值转换为二进制,十六进制和八进制的单个函数不会转换为二进制

将整数转换为带符号的2的补码二进制字符串

将十进制数7710转换为8位二进制补码

将十六进制数字转换为带符号的short

是否有一种算法可以将十六进制的二进制补码手动转换为十进制?

将二进制转换为带符号的十进制

将带符号的货币转换为十进制

在Java意外输出中将二进制/十进制小数转换为十六进制

如何将14位,二进制补码值转换为Integer或Short并在Java中保持符号

将带符号的Int转换为带空格的十六进制字符串

Java:将带符号的Int_32(十六进制)转换为Int

将1和0的32位二进制字符串转换为SQL Server中的带符号十进制数

在Java中将24位二进制补码转换为带符号的十进制数

如何从8位带符号二进制数中得到一个负的十进制值?

如何将十进制值转换为二进制位?

如何使用二进制补码手动将十六进制转换为十进制

如何快速使用带符号的十六进制文字?