gpt4 book ai didi

c# - C#按位运算符

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:22 25 4
gpt4 key购买 nike

有人可以解释下面的代码做什么。

private int ReadInt32(byte[] _il, ref int position)
{
return (((il[position++] | (il[position++] << 8)) | (il[position++] << 0x10)) | (il[position++] << 0x18));
}


我不确定我是否了解这种方法中的按位运算符如何工作,请为我分解一下吗?

最佳答案

整数以字节数组形式给出。
然后,每个字节向左移0/8/16/24位,并将这些值相加以获得整数值。

这是十六进制格式的Int32

0x10203040


它表示为以下字节数组(小端格式,因此字节是相反的顺序):

[0x40, 0x30, 0x20, 0x10]


为了从数组中重新构建整数,需要对每个元素进行移位,即执行以下逻辑:

a = 0x40        = 0x00000040
b = 0x30 << 8 = 0x00003000
c = 0x20 << 16 = 0x00200000
d = 0x10 << 24 = 0x10000000


然后将这些值进行或运算:

int result = a | b | c | d;

this gives:

0x00000040 |
0x00003000 |
0x00200000 |
0x10000000 |
------------------
0x10203040

关于c# - C#按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com