gpt4 book ai didi

c - a[0] = addr & 0xff 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 14:50:40 27 4
gpt4 key购买 nike

最近在看《the shellcoder's handbook》这本书,对c的理解很深,但是最近遇到一段代码,看不懂。

这是一段代码:

          char a[4];
unsigned int addr = 0x0806d3b0;
a[0] = addr & 0xff;
a[1] = (addr & 0xff00) >> 8;
a[2] = (addr & 0xff0000) >> 16;
a[3] = (addr) >> 24;

所以问题是这是做什么的,什么是 addr & 0xff(以及它下面的三行)以及是什么使 >> 8 成为它(我知道它将 8 除以 2)?Ps:如果您对我应该使用的标签有任何想法,请不要犹豫告诉我。

最佳答案

变量addr是 32 位数据,而数组中的每个元素 a是8位。代码所做的是复制 addr 的 32 位。进入数组 a , 一次一个字节。

让我们走这条线:

a[1] = (addr & 0xff00) >> 8; 

然后一步一步来。

  1. addr & 0xff00这将获取 addr 中值的第 8 位到第 15 位。 ,运算后的结果为0x0000d300 .
  2. >> 8这会将位向右移动,所以 0x0000d300变成 0x000000d3 .
  3. 将掩码和移位的结果值分配给a[1] .

关于c - a[0] = addr & 0xff 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33868998/

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