- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
最近在看《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;
然后一步一步来。
addr & 0xff00
这将获取 addr
中值的第 8 位到第 15 位。 ,运算后的结果为0x0000d300
.>> 8
这会将位向右移动,所以 0x0000d300
变成 0x000000d3
.a[1]
.关于c - a[0] = addr & 0xff 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33868998/
我正在使用 python 检索 HTML 源,但结果看起来像这样。这是什么,为什么我没有得到实际的页面源代码? b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 5 年前。 Improve t
在寻找帮助清理某些输出的解决方案的过程中,我遇到了执行以下操作的代码。 preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i',
我知道 0xff 可以根据变量类型有不同的表示。就像 -1 表示有符号(字符/整数(?))和 255 表示无符号字符。 但我使用的是与实现无关的 uint8_t 类型,并且我已确保 0xff 实际上位
我正在尝试使用波形库从波形文件中读取二进制数据。数据被读取并报告为 '\x0f\x06\x0a...' 形式的字符串文字,我想将十六进制数转换为整数(你知道,以十为基数)。我遇到的问题是这些字符串并没
我正在用 Python 3 编写代码来从 ECG 传感器读取数据。最终代码必须将从传感器接收到的数据包写入文件。这是我实际拥有的代码: import serial if __name__ == '__
1st - 有什么区别 #define s 0xFF 和 #define s '\xFF' 2nd - 为什么第二行等于-1?第三 - 为什么在我尝试这个之后(在 '\xFF' 的情况下) unsig
问题:通过iis发布的网站放到f5设备后边,通过透明监听模式waf设备过滤后,公网访问者的真实ip被waf设备ip替代,在网站日志看不到原来的真实ip了。 处理方案1:利用第三方iis插件调
我在这段代码中看到一个字符串: data[:2] == '\xff\xfe' 我不知道'\xff\xfe'是什么, 所以我想转义,但是没有成功 import cgi print cgi.escape(
如何检测空格、下划线无效?必须是一个词。但不与 [^\w\xC0-\xFF] 如果我这样做\w\xC0-\xFF 我可以检测到空间 但是我如何检测“下划线”? 输入无效:username1234 _1
我编写了一个程序来匹配随机其他数据中出现的所有特定模式的二进制数据(以十六进制工作)。它在文件中的任何位置出现大于 0 的任意次数。这是我用来进行搜索的代码,其中 f 已经以读/写模式打开: patt
为什么通过 websockets 的消息总是以 \x00 开头并以 \xff 结尾,如 \x00Your message\xff ? 最佳答案 此 documentation可能有帮助... 摘自第
所以我写了这个...... @Component class AuthenticationFailureListener : ApplicationListener{ private val
我有具有以下模式的 QRegExp QRegExp byteArray; byteArray.setPattern("[\\x00-\\xff]*"); 这是用于验证QString 的模式。有人可以提
下面是代码: def add(a,b): return a + b while True: try: a=float(input('Please enter a num
我尝试从 Web 应用程序中发现客户端是否使用透明代理。理论上应该很简单:只需检查 XFF (x-forwarder-for) header 是否存在。但是由于某些未知原因,这根本不起作用。 我在通过
在生产中遇到此错误,但无法弄清楚问题出在哪里。相同的请求适用于本地开发。但生产失败。我正在为移动客户端使用构建 API 错误跟踪 `` Encoding::UndefinedConversionErr
我正在使用 Rails 的 VPIM gem 根据用户的个人资料信息创建 vcard。 在我的本地主机上一切正常,但当我部署到 Heroku 时,应用程序崩溃了。 我在 Heroku 日志中收到以下错
我有一个程序,它返回如下字符串:b'\\xfe\\xff\\x000\\x008\\x00/\\x001\\x002\\x00/\\x001\\x009\\x009\\x003' 我怎样才能将其转换为
考虑这段代码: typedef union { int integer_; char mem_[4]; } MemoryView; int main() { MemoryVie
我是一名优秀的程序员,十分优秀!