C语言如何打印int long double 结构体变量各个字节的内容

suyunyixuan 2013-07-10 02:16:28
C语言如何打印int long double 结构体变量各个字节的内容
...全文
659 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-07-10
  • 打赏
  • 举报
回复
printf("%02x ", *ptr);
赵4老师 2013-07-10
  • 打赏
  • 举报
回复
12行 printf("%4x", *ptr); 应改为 printf("%02x", *ptr);
Ericz 2013-07-10
  • 打赏
  • 举报
回复

#include <stdio.h>
int print_all_byte(void *addr, int size)
{
	unsigned char *ptr = addr; 
	int print_bytes = 0; 

	if(NULL == ptr) {
		return -1; 
	}

	while(print_bytes < size) {
		printf("%4x", *ptr); 
		ptr++; 
		print_bytes++; 
	}
	printf("\n"); 
	return print_bytes; 
}

int main(void)
{
	int d1 = 0x12345678; 
	long d2 = 0x87654321; 
	double d3 = 0.12345678; 
	int arr1[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 1234}; 

	if(sizeof(d1) == print_all_byte((void *)&d1, sizeof(d1))) {
		printf("print int success!\n"); 
	}

	if(sizeof(d2) == print_all_byte((void *)&d2, sizeof(d2))) {
		printf("print long success!\n"); 
	}

	if(sizeof(d3) == print_all_byte((void *)&d3, sizeof(d3))) {
		printf("printf double success!\n"); 
	}

	if(sizeof(arr1) == print_all_byte((void *)arr1, sizeof(arr1))) {
		printf("printf array success!\n"); 
	}
	return 0; 
}

www_adintr_com 2013-07-10
  • 打赏
  • 举报
回复
直接把结构体指针强转成 char* , 然后循环用 "%02X" 来输出, 比如: char* xx = &obj; for(int i = 0; i < sizeof(obj); ++i) printf("%02X ", xx[i]);
图灵狗 2013-07-10
  • 打赏
  • 举报
回复
%d, %l, %lf

70,038

社区成员

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

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