我需要将Int32值转换为3字节(24位)整数。字节顺序保持不变(很少),但我无法弄清楚如何恰当地移动符号。这些值已经被限制在适当的范围内,我只是无法弄清楚如何将4个字节转换为3.使用C#4.0。这是为了硬件集成,所以我必须有24位值,不能使用32位。
答案 0 :(得分:2)
找到了这个:http://bytes.com/topic/c-sharp/answers/238589-int-byte
int myInt = 800;
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
听起来你只需要获得数组的最后3个元素。
编辑:
正如耶利米指出的那样,你需要做一些像这样的事情int myInt = 800;
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
if (BitConverter.IsLittleEndian) {
// get the first 3 elements
} else {
// get the last 3 elements
}
答案 1 :(得分:1)
如果要进行转换,只需删除四字节数字的顶部字节即可。二进制补码表示将正确处理符号。如果要将24位数保留在Int32
变量中,可以使用v & 0xFFFFFF
来获得低24位。我看到你对字节数组的评论:如果你在数组中有空格,写下数字的所有四个字节,然后发送前三个字节;但这是特定于小端系统的。