打印内存里不同数据类型的数据
总结
- 把任意数据类型的指针强制转换成(unsigned char *) 类型,即把任意数据类型转成无符号的字符型,便于通过[i]下标方式直接对内存的访问
- size_t 类型:
在32位机器中为 unsigned int (32位) 在64为机器中为 unsigned long (64位) 故size_t 足够大,能够表示该机器中任意数据类型的长度 所以很多地方都会使用size_t 代替 int 比如(memset(a,b,n)) - %.2x 等同于 %02x 表示每两个16进制位一同打印,用0对齐
源代码
#include <stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer head,size_t len){
size_t i;
for (i = 0; i < len; i++)
{
printf("%.2x",head[i]);
}
}
void show_int(int x){
show_bytes((byte_pointer)&x,sizeof(int));
}
void show_float(float x){
show_bytes((byte_pointer)&x,sizeof(float));
}
using namespace std;
int main(){
int a=54334;
show_int(a);
}
|