问下一个打印内存的问题

l360220954 2014-05-17 10:49:10
//这个是要在下面使用的那个数据类型的定义
typedef unsigned int UINT8;
然后我定义了一个这么大的缓冲区,该缓冲区总共可以接收1024个数据,每个数据的大小可达8个字节
UINT8 buf[1024][8];
想问下该怎么打印出某一个缓冲区的数据有16进制表示呢?
比方说,我现在想打印出buf[0]这个数据缓冲区,该怎么去写这个printf语句呢?
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
l360220954 2014-05-22
  • 打赏
  • 举报
回复
引用 楼主 l360220954 的回复:
//这个是要在下面使用的那个数据类型的定义 typedef unsigned int UINT8; 然后我定义了一个这么大的缓冲区,该缓冲区总共可以接收1024个数据,每个数据的大小可达8个字节 UINT8 buf[1024][8]; 想问下该怎么打印出某一个缓冲区的数据有16进制表示呢? 比方说,我现在想打印出buf[0]这个数据缓冲区,该怎么去写这个printf语句呢?
这个win32下是可以打印得出来,在linux下要用%llu
赵4老师 2014-05-22
  • 打赏
  • 举报
回复
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
lm_whales 2014-05-21
  • 打赏
  • 举报
回复
因为定义成
UINT8 buf[1024][8];
所以 每个数据的大小可达8个字节。;这个无法解决。 除非额外存储 每个数组几个UINT8。 即再定义一个数组,表示数据长度
 int len [1024];
再不然,增加一个数据表示结束数据 定义成
UINT8 buf[1024][ 8 + 1];
也可以定义为结构数组
struct Data{
 int len;
UINT8 data[8];
};
struct Data buf[1024];
「已注销」 2014-05-17
  • 打赏
  • 举报
回复

typedef unsigned char UINT8;
UINT8 buf[1024][8];

for(int i =0; i < 1024; i++) {
	unsigned __int64 hexData = *(unsigned __int64*)buf[i];
	printf("0x%.16I64X\n",hexData);
}
max_min_ 2014-05-17
  • 打赏
  • 举报
回复
把buf的数据解析出来!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧