【发布时间】:2018-07-12 11:53:42
【问题描述】:
我有两个字节数组,它们的长度可变,但总加起来最多 8 个字节。这些需要组合成一个长的。我可以通过创建一个字节数组并复制所需的数据来做到这一点。但我在想这也应该可以通过位移来实现。我一直在尝试这个(只用一个长度来简化):
var bytes1 = new byte[] { 1, 2, 3, 4, 5, 6, 7 };
var bytes2 = new byte[] { 8 };
unsafe
{
fixed (byte* b1 = bytes1)
{
fixed (byte* b2 = bytes2)
{
ulong* bl1 = (ulong*)b1;
ulong v = (*bl1<< 8) | (*b2);
var bytes = bytes1.Concat(bytes2).ToArray();
// These two are different:
Console.WriteLine(v);
Console.WriteLine(BitConverter.ToUInt64(bytes, 0));
}
}
}
我知道Concat 有效,但我也希望它也有效。
【问题讨论】: