从 Int 转换为十六进制,然后保存到字节..拆分值

问题描述 投票:0回答:1

我正在驱动一个步进电机,你必须传递一个字节数组来控制它。

我(新手)遇到的问题之一是你必须将十六进制作为两个字节值传递......

例如,如果我想将速度设置为 1200rpm,则将 1200 转换为十六进制,即 04B0,然后设置两个字节.. 一个字节为 04,另一个字节为 B0.. 您可以在此处看到: 0x04 然后 0xB0

MBData7 = 新字节[] { 0x01, 0x06, 0x62, 0x03, 0x04, 0xB0, 0x66, 0xE8 };

有些速度如 100 是十六进制 64,发送时字节为 00,下一个字节为 64,所以会是

MBData7 = 新字节[] { 0x01, 0x06, 0x62, 0x03, 0x00, 0x64, 0x66, 0xE8 };

我可以采用整数值的最佳方法是什么,最大值为 3500,最小值为 60,并且能够生成所需的两个字节值,以便我可以根据需要将它们传递到字节数组中......

谢谢

c#
1个回答
0
投票

字节存储 0 到 255 之间的值。两位十六进制值具有相同的范围。因此,通常使用十六进制表示来表示字节值。然而,当将整数(无论采用哪种基数)转换为字节时,您真正需要的是将其转换为基数 256。不需要中间步骤转换为十六进制表示形式。

算法(伪代码):

int n = <value to be converted>;
byte[] bytes = new byte[<expected size>];
int i = <expected size>;
repeat
   byte b = n modulo 256;
   bytes[--i] = b;
   n = n / 256;
until n = 0;
© www.soinside.com 2019 - 2024. All rights reserved.