【C语言】打印内存数据
2023-12-22 17:13:09
C语言,用函数封装:16进制打印unsigned char *p指向的内存,长度为int l。16个字节,换一次行。16个字节用一个字符串缓存,一次打印。
以下是一个使用函数封装的C语言代码,用于以16进制格式打印unsigned char *p
指向的内存,长度为int l
,每16个字节换一次行,并且使用一个字符串缓存16个字节,一次性打印:
#include <stdio.h>
#include <string.h>
void printMemoryHex(unsigned char *p, int l) {
int count = 0;
char buffer[16 * 3 + 1]; // 缓存16个字节的16进制字符串
for (int i = 0; i < l; i++) {
sprintf(buffer + count * 3, "%02X ", p[i]);
count++;
if (count == 16) {
// 一次性打印16个字节的16进制字符串
printf("%s\n", buffer);
count = 0; // 重置计数器
}
}
if (count > 0) {
// 打印剩余的字节(不足16个)的16进制字符串
printf("%s\n", buffer);
}
}
int main() {
unsigned char *p = /* 指向内存的指针 */;
int l = /* 内存长度 */;
printf("内存内容(16进制):\n");
printMemoryHex(p, l);
return 0;
}
在这个示例中,我们定义了一个名为printMemoryHex
的函数,它接受一个指向内存的指针p
和内存长度l
作为参数。函数内部使用一个循环遍历内存,并将每个字节转换为16进制字符串,存储在缓存字符串buffer
中。当缓存字符串填满16个字节时,我们一次性打印这16个字节的16进制字符串,并在打印后重置计数器。如果内存长度不是16的倍数,我们将打印剩余的字节(不足16个)的16进制字符串。最后,在主函数中调用printMemoryHex
函数来打印内存内容。
文章来源:https://blog.csdn.net/eidolon_foot/article/details/135150051
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!