C# c语言中的字节数组操作#
我花了好几个小时想弄明白如何操作字节数组来用C#进行“解包”和打包 压缩数据格式 数据打包在8字节的“数据包”中,MS位从7字节剥离 参数字节,并压缩为第八个字节,在开始时发送 8字节数据包的一部分 例如: 每行表示一个字节,每列表示一位(MSB在先)C# c语言中的字节数组操作#,c#,bytearray,bit-manipulation,C#,Bytearray,Bit Manipulation,我花了好几个小时想弄明白如何操作字节数组来用C#进行“解包”和打包 压缩数据格式 数据打包在8字节的“数据包”中,MS位从7字节剥离 参数字节,并压缩为第八个字节,在开始时发送 8字节数据包的一部分 例如: 每行表示一个字节,每列表示一位(MSB在先) 如何实现此转换?如果我正确地阅读了规范,这应该可以做到: byte[] input = new byte[7] { 0x81, 0x82, 0x03, 0x84, 0x05, 0x06, 0x87 }; byte[] output = new
如何实现此转换?如果我正确地阅读了规范,这应该可以做到:
byte[] input = new byte[7] { 0x81, 0x82, 0x03, 0x84, 0x05, 0x06, 0x87 };
byte[] output = new byte[8];
for (int i = 0; i < 7; i++)
{
output[0] |= (byte)((input[i] >> 7) << i);
output[i + 1] = (byte)(input[i] & 0x7F);
}
// output == { 0x4b, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }
// output[0] == 0b01001011
byte[]input=新字节[7]{0x81、0x82、0x03、0x84、0x05、0x06、0x87};
字节[]输出=新字节[8];
对于(int i=0;i<7;i++)
{
输出[0]|=(字节)((输入[i]>>7)我觉得你的问题停了一半…规范和示例来自,并且似乎没有提供比问题中的内容更多的细节。因此,我想需要一些独创性来解决如何实现这种转换。我想我理解:行表示一个字节,行中的每个位置表示一位e值实际上是解包序列(排序)中字节的数字/位置,A=1字节,B=2字节,等等。字母后的数字是字节中指示数字位置的实际位。这是我的猜测,我不确定,因此没有答案。请发布您尝试过的代码。
byte[] input = new byte[7] { 0x81, 0x82, 0x03, 0x84, 0x05, 0x06, 0x87 };
byte[] output = new byte[8];
for (int i = 0; i < 7; i++)
{
output[0] |= (byte)((input[i] >> 7) << i);
output[i + 1] = (byte)(input[i] & 0x7F);
}
// output == { 0x4b, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }
// output[0] == 0b01001011