当前位置: 首页 > news >正文

LOWORD, HIWORD, LOBYTE, HIBYTE的解释

文章目录

  • 实验
  • 结论

实验

在这里插入图片描述
int 类型大小正常为4Byte
以小端序来看 0x12345678在内存中的存储为

0x78 0x56 0x34 0x12

0x78在低地址,0x12在高地址
程序输出

#include <stdio.h>
#include <string.h>
#include<windows.h>int main()
{int a = 0x12345678;printf("LOWORD %x\n",LOWORD(a));printf("HIWORD %x\n",HIWORD(a));printf("LOBYTE %x\n",LOBYTE(a));printf("HIBYTE %x\n",HIBYTE(a));
}
LOWORD 5678
HIWORD 1234
LOBYTE 78
HIBYTE 56

结论

可以看到以WORD结尾的是取出两个字节
BYTE结尾取出一个字节
LOWORD 是取出内存中低地址的前两个字节
HIWORD 是取出内存中高地址的后两个字节

LOBYTE 取出了内存中最低的一个字节0x78
HIBYTE 取出了第二个字节0x56
从这里来看,他们是以两个字节为操作对象,哪怕给出的数据是int类型的数据

按照我的猜测以WORD结尾的就是以4个字节为操作对象了
以下是测试

#include <stdio.h>
#include <string.h>
#include <windows.h>int main()
{unsigned long long a = 0x123456789abcdef0;printf("long long -> %x\n", sizeof(unsigned long long));printf("LOWORD %x\n", LOWORD(a));printf("HIWORD %x\n", HIWORD(a));printf("LOBYTE %x\n", LOBYTE(a));printf("HIBYTE %x\n", HIBYTE(a));
}

此时a在内存中的表示为

0xf0 0xde 0xbc 0x9a 0x78 0x56 0x34 0x12

输出结果为

long long -> 8
LOWORD def0
HIWORD 9abc
LOBYTE f0
HIBYTE de

看来和我们的猜想一致

http://www.lryc.cn/news/231182.html

相关文章:

  • Centos7.9用rancher来快速部署K8S
  • NSSCTF第12页(2)
  • 基于单片机的电源切换控制器设计(论文+源码)
  • 机器学习-特征选择:使用Lassco回归精确选择最佳特征
  • uniapp开发ios上线(在win环境下使用三方)
  • 【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (六)
  • 景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商
  • OpenCV+特征检测
  • Excel-lookup函数核对两个表格的数据匹配
  • Vue 简单的语法
  • 华为ensp:vrrp双机热备负载均衡
  • postswigger 靶场(CSRF)攻略-- 1.没有防御措施的 CSRF 漏洞
  • Langchain知识点(下)
  • 百度飞浆环境安装
  • 云效流水线docker部署 :node.js镜像部署VUE项目
  • 软件工程理论与实践 (吕云翔) 第五章 面向对象方法与UML课后习题及其答案解析
  • 三层架构java _web
  • 微信小程序项目——基本目录构成
  • python 基础语法 (常常容易漏掉)
  • servlet 的XML Schema从哪边获取
  • CPU vs GPU:谁更适合进行图像处理?
  • 基于flask+bootstrap4实现的注重创作的轻博客系统项目源码
  • 手把手教你实现贪吃蛇
  • 存储服务器和普通服务器有哪些区别
  • python数据处理作业4:使用numpy数组对象,随机创建4*4的矩阵,并提取其对角元素
  • 每日一题----昂贵的婚礼
  • css实战——清除列表中最后一个元素的下边距
  • Clickhouse学习笔记(15)—— Clickhouse备份
  • 想买GPT4会员却只能排队?来看看背后的故事!
  • Oracle(17)Managing Roles