3

我需要将 Int32 值转换为 3 字节(24 位)整数。字节序保持不变(很少),但我不知道如何适当地移动标志。这些值已经被限制在适当的范围内,我只是不知道如何将 4 字节转换为 3。使用 C# 4.0。这是为了硬件集成,所以我必须有 24 位的值,不能使用 32 位。

4

2 回答 2

3

如果要进行该转换,只需删除四字节数字的最高字节即可。二进制补码表示将正确处理符号。如果您想将 24 位数字保留在Int32变量中,您可以使用v & 0xFFFFFF仅获取低 24 位。我看到了您对字节数组的评论:如果数组中有空间,请写入数字的所有四个字节并仅发送前三个;不过,这是特定于小端系统的。

于 2011-02-07T06:19:07.560 回答
3

发现这个: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
}
于 2011-02-07T06:20:42.833 回答