所以说我有一个长度为16的字节数组,每个8位表示我的数据,一个8位长的数组,每4位(所以每个字节2个)代表我的数据。
如果我想循环使用这些并获取值,那么最简单的方法是什么?
我的不良尝试将是这样的,但这似乎并没有像我期望的那样起作用。
for(int i = 0; i < bigByteArray.Length; i++)
{
byte BigByteInfo = bigByteArray[i];
byte SmallByteInfo;
if(i % 2 == 0)
{
SmallByteInfo = smallByteArray[i / 2] % 16;
}
else
{
SmallByteInfo = smallByteArray[i / 2] / 16;
}
//Use of data Here.
}
答案 0 :(得分:1)
如果我理解正确(bigByteArray长16,smallByteArray长8,打包):
for(int i = 0; i < bigByteArray.Length; i++)
{
bigByteArray[i] = (byte)((smallByteArray[i / 2] >> (i % 2 == 0 ? 4 : 0)) & 0xF);
}
答案 1 :(得分:1)
您可以将此类用作帮助类
public class FoutBitsArrayEnumerator : IEnumeable<byte>
{
FoutBitsArrayEnumerator(byte[] array)
{
this.array = array;
}
public IEnumerator<byte> GetEnumerator
{
foreach (byte i in array)
{
yield return i & 15;
yield return (i >> 4) & 15;
}
}
byte[] array;
}