打印内存, 打印16进制

打印内存信息

 1 #include <stdio.h>
 2
 3 // 打印内存信息
 4 void showMemoryHex(void* ptr, int size) {
 5     unsigned char* bytes = (unsigned char*)ptr;
 6     for (int i = 0; i < size; i++) {
 7         printf(" %02x", bytes[i]);
 8     }
 9 }

测试

struct MyStruct {
    int age;
    char name[12];
};

int main(int argc, char* argv[])
{
    MyStruct tony;
    {
        memset(&tony, 0, sizeof(MyStruct));

        tony.age = 123;
        strcpy(tony.name, "tony");
    }

    MyStruct* pTony = &tony;
    showMemoryHex((void*)pTony, sizeof(MyStruct));
    getchar();
    return 0;
}
时间: 2024-10-18 22:37:10

打印内存, 打印16进制的相关文章

C语言打印16进制出现0xffffff现象的问题剖析!

今天在博问里面看到一个朋友的问题,大致是在网络程序中,打印出来的16进制数,莫名的出现ffffff.例如,某个byte真是值为0xc9,打印出来确是0xffffffc9.原博问连接如下:http://q.cnblogs.com/q/71073/ 其实类似的问题不是只在网络程序中才会出现的,看示例代码: 1 #include <stdio.h> 2 int main() 3 { 4 char c = 0xc9; 5 printf("A:c = %2x\n",(unsigned

支持windows linux下将指定内存段转为16进制与ascii码的日志输出类

来源:http://blog.csdn.net/lezhiyong 1. 简介 将指定内存段转为16进制与asci码的输出到日志文件的类. 2. 功能介绍 1) 支持window与linus双系统. 2) 可指定输出目录. 3) 日志能输出的时间精确到毫秒,日志能输出线程号. 4) 提供字符串输出. 5) 提供指定内存转换为16进制输出. 6) 提供指定内存转换为16进制和ascii码同时输出. 7) 可调整16进制输出间距. 3. 原理和算法 1) 模块是基于C++语言编写: 2) 通过条件定

以16进制打印出一块内存buff

如下代码(支持windows与Linux)会以[16进制][每行16字节]打印出一块内存的内容: void PrintBuffer(void* pBuff, unsigned int nLen) { if (NULL == pBuff || 0 == nLen) { return; } const int nBytePerLine = 16; unsigned char* p = (unsigned char*)pBuff; char szHex[3*nBytePerLine+1] = {0};

Linux c字符串中不可打印字符转换成16进制

本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的不可打印字符转换成16进制,此处提供一个函数供使用: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 void printhex(unsigned char *src,int len) {     

byte值变16进制打印的 方法解析

首先我们要知道比特的大小是多少,Java中的定义为byte ,不论是CC++还是Java,一个字节都是8个位 其表示就是 XXXX XXXX x表示0或者1 而每四个为可以表示为16进制,最小是0=0x0 最大是15=0xF 也就是说一个byte为,可以由两个16进制数字表示,所以可以定义十六进制的数组,下表表示十进制数值,本身是16进制的String 所以1表示为1,10表示为a,15表示为f 上代码: public static String byteTo16(byte bt){ Strin

不同变量在内存中的存在形式(以16进制表示)

1 #include<stdio.h> 2 int main() 3 { 4 char a= -1; //1111 1111 1个字节 5 short b= -1; //1111 1111- 1111 1111 2个字节 6 int c= -1; //1111 1111- 1111 1111- 1111 1111- 1111 1111 4个字节 7 printf("%hhx\n",a); //打印1个字节 8 printf("%hx\n",b); //打

数组中hashCode就是内存地址,以及汉字幻化为16进制或10进制

int[] arr4={1,2,3,4,5}; System.out.println("arr4: "+arr4); System.out.println("arr4.hashCode: "+arr4.hashCode()); //将hashCode值转化为16进制的两种方式 System.out.println(Integer.toString(366712642,16));//将整数转化为16进制的数为:15db9742 System.out.println(I

vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)

// 可以用,此程序实现的是是文字转换到机内码.机内码=国标码+8080H,不过学习了. //此程序是利用汉字在机器内输出就是机内码的原理,直接保存的,其实挺简单. //输入一串汉字和数字的混合字符, 经过程序转换, 对应输出一串16进制码(数字-〉ASII码,汉字—〉国标码) CString temp; GetDlgItemText(IDC_EDIT1,m_hanzi);//将汉字保存到变量m_hanzi unsigned char *b=new unsigned char[m_hanzi.G

详解2进制,10进制,16进制,8进制,36进制

本篇介绍C/C++语言中的进制的概念,主要介绍2进制.10进制.16进制,这三种是编程时必须掌握的也是最经常使用的.另外,介绍8进制和36进制,当中 36进制在实际project项目中会遇到. (本文选自<C/C++学习指南>.邵发.附录"2进制,10进制,16进制") 讲2进制.10进制.16进制的视频教程,点击观看 权利声明:作者拥有本书的所有权利. 作者授权不论什么人都能够自由转载本站点公布的内容,但转载时必须遵守下面限制: ①转载时必须全文转载.不得有不论什么改动,

Java中byte与16进制字符串的互相转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可