如何将一个字节插入到从 X 位置开始的 int 中

问题描述 投票:0回答:2

我有一个 Int32 分为不同的部分,每个部分都有自己的价值。

假设我有:

byte version = 0x02
uInt32 packedValues = 0; 

如何将 0x02 放入 packedValues,从索引 20 或任何索引开始。

谢谢!

c# bit-manipulation bit
2个回答
2
投票

不确定索引是什么意思,但似乎您需要做一些小动作。沿着这些线的东西:

byte version = 0x02;
var index = 20;
uint packedValues = 0;

var b1 = version << index;
packedValues = (uint)((packedValues & ~(0xFF << index)) | (uint)(version << index));

(packedValues & ~(0xFF << index))
- 将所需位清零,其余设置来自源的位。


0
投票

您可以使用

span<byte>
将您的 int 转换为字节集合。现在无法测试,但类似

Span<byte> bytes = BitConverter.GetBytes(packedValues);

bytes[20] = 0x02;

uint32 packedValues = BitConverter.ToInt32(ItemLengthBytes);
© www.soinside.com 2019 - 2024. All rights reserved.