C语言 通过内存地址输出该内存上存储的相应数据
建个函数,如:memory(void*address,intdatasize,introw),输入相应的address、datasize、row即可输出如下表http:/...
建个函数,如:memory(void *address,int datasize,int row),
输入相应的address、datasize、row即可输出如下表
http://hiphotos.baidu.com/lufil999/pic/item/d49b3f6629c28595e6113afa.jpg
的样式。memory(0x4132A0,256,16)的结果。 0x4132A0是输入的内存地址,右面16位是row为16的各内存存储的数据,16进制的。 datasize是16行*16列的数据范围。 展开
的样式。memory(0x4132A0,256,16)的结果。 0x4132A0是输入的内存地址,右面16位是row为16的各内存存储的数据,16进制的。 datasize是16行*16列的数据范围。 展开
2个回答
展开全部
供参考,没试过如何从任意地址开始打印:
#include <iostream>
using namespace std;
void memory(void *address,int datasize,int row)
{
unsigned char *pAddr = (unsigned char*)address;
while (datasize)
{
int nCurSize = min(datasize, row);
printf("0x%08X ", pAddr );
// 输出16进制数据
for (int i = 0; i < nCurSize; i++)
{
printf("%02x ", pAddr[i]);
}
// 补空白让ascii对齐
for (int i = 0; i < (row - nCurSize); i++)
{
printf(" ");
}
// 输出ascii
for (int i = 0; i < nCurSize; i++)
{
if ((pAddr[i] < ' ') || (pAddr[i] > 'z'))
{
printf(".");
}
else
{
printf("%c", (char)pAddr[i]);
}
}
printf("\n");
// 打印下一列
datasize -= nCurSize;
pAddr += nCurSize;
}
}
void main()
{
void* address;
int datasize;
int row;
printf("输入数据大小和行的大小:");
scanf("%d %d", &datasize, &row);
address = (void*)malloc(datasize);
memory(address, datasize, row);
free(address);
}
#include <iostream>
using namespace std;
void memory(void *address,int datasize,int row)
{
unsigned char *pAddr = (unsigned char*)address;
while (datasize)
{
int nCurSize = min(datasize, row);
printf("0x%08X ", pAddr );
// 输出16进制数据
for (int i = 0; i < nCurSize; i++)
{
printf("%02x ", pAddr[i]);
}
// 补空白让ascii对齐
for (int i = 0; i < (row - nCurSize); i++)
{
printf(" ");
}
// 输出ascii
for (int i = 0; i < nCurSize; i++)
{
if ((pAddr[i] < ' ') || (pAddr[i] > 'z'))
{
printf(".");
}
else
{
printf("%c", (char)pAddr[i]);
}
}
printf("\n");
// 打印下一列
datasize -= nCurSize;
pAddr += nCurSize;
}
}
void main()
{
void* address;
int datasize;
int row;
printf("输入数据大小和行的大小:");
scanf("%d %d", &datasize, &row);
address = (void*)malloc(datasize);
memory(address, datasize, row);
free(address);
}
推荐于2016-10-05 · 知道合伙人数码行家
关注
展开全部
c的char数据属于基本类型,基本类型其中还包括-整型,实型,枚举类型。
数据在内存中是以二进制形式存放的。数值是以补码表示的。
整型:
一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1”
实型:
在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分。
字符型:
在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。而这些ASCII代码值在计算机中也是以二进制形式存放的。这个与整型的存储很相似。因此这两类之间的转换也比较方便。
数据在内存中是以二进制形式存放的。数值是以补码表示的。
整型:
一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1”
实型:
在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分。
字符型:
在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。而这些ASCII代码值在计算机中也是以二进制形式存放的。这个与整型的存储很相似。因此这两类之间的转换也比较方便。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询