博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打印不同程序对象的字节表示(深入理解计算机系统)
阅读量:4659 次
发布时间:2019-06-09

本文共 1015 字,大约阅读时间需要 3 分钟。

#include 
#include
typedef unsigned char *byte_pointer;void show_bytes(byte_pointer start, size_t len) { size_t i; for (i = 0; i < len; i++) printf(" %.2x", start[i]); printf("\n");}void show_int(int x) { show_bytes((byte_pointer) &x, sizeof(int));}void show_float(float x) { show_bytes((byte_pointer) &x, sizeof(float));}void show_pointer(void *x) { show_bytes((byte_pointer) &x, sizeof(void *));}int main(int argc,char *argv[]) { int ival = 12345; float fval = (float)ival; int *pval = &ival; show_int(ival); show_float(fval); show_pointer(pval); system("pause"); return 0;}

上面的代码用于使用强制类型转换打印不同类型数据的字节表示,用typedef将数据类型byte_point定义为一个指向类型为“unsigned char”的指针。

传入的x变量将会被编译器认为是指向一个字节序列,并且其中的每个字节存放的都是一个“unsigned char”类型的值。

C格式化指令“%.2x”表示整数必须用至少两个数字的十六进制格式输出。

输出结果为:

机器 类型 字节(十六进制)
Windows64 12345 int 39 30 00 00
Windows64 12345 float 00 e4 40 46
Windows64 &ival int * 04 f8 6f 00

转载于:https://www.cnblogs.com/adorkable/p/8045068.html

你可能感兴趣的文章
InputStream 转换 InputStreamReader再转换BufferedReader
查看>>
在线程池中的使用spring aop事务增强
查看>>
javascript相关知识
查看>>
数组对象去重
查看>>
你未必知道的12个JavaScript技巧
查看>>
mysql的基本操作命令
查看>>
微信小程序---数据缓存
查看>>
Python网页正文转换语音文件的操作方法
查看>>
常用SQL查询语句
查看>>
Redis Windows版安装详解
查看>>
linux后台运行python程序 nohup
查看>>
吴裕雄--天生自然 高等数学学习:对面积的曲面积分
查看>>
css
查看>>
Android中数据文件解析(Json解析)
查看>>
自定义seekBar设置进度条背景图片
查看>>
16日彻底去除安卓应用的内置广告
查看>>
ssm资源配置
查看>>
斗鱼爬虫,爬取颜值频道的主播图片和名字
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 B】 Lazy Security Guard
查看>>
【codeforces 499C】Crazy Town
查看>>