我有一个 Int32 分为不同的部分,每个部分都有自己的价值。
假设我有:
byte version = 0x02
uInt32 packedValues = 0;
如何将 0x02 放入 packedValues,从索引 20 或任何索引开始。
谢谢!
不确定索引是什么意思,但似乎您需要做一些小动作。沿着这些线的东西:
byte version = 0x02;
var index = 20;
uint packedValues = 0;
var b1 = version << index;
packedValues = (uint)((packedValues & ~(0xFF << index)) | (uint)(version << index));
(packedValues & ~(0xFF << index))
- 将所需位清零,其余设置来自源的位。
您可以使用
span<byte>
将您的 int 转换为字节集合。现在无法测试,但类似
Span<byte> bytes = BitConverter.GetBytes(packedValues);
bytes[20] = 0x02;
uint32 packedValues = BitConverter.ToInt32(ItemLengthBytes);