将数字按照其16进制的字符形式打印出来, 方便观察数据位的变化
2013-05-10 16:30
453 查看
#include "stdio.h" #include "malloc.h" //字节流变为对应的16进制字符流 #define m_malloc(x, y) (malloc((x))) #define m_free(x) (free((x))) static char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; #define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) void print_byte(char b) { //前四位 putchar(hex[(b & 0xF0) >> 4]); //后四位 putchar(hex[b & 0x0F]); } void print_string(char *str, int len) { int i; for (i = 0; i < len; i++) print_byte(str[i]); } void print_hexstream(char *str, int len) { char *cp = NULL, temp; int i, newlen; newlen = len*2; cp = (char *)m_malloc(newlen, 0); if (cp != NULL) { for (i = 0; i < len; i++) { temp = str[i]; cp[i*2] = hex[(temp & 0xF0) >> 4]; cp[i*2+1] = hex[temp & 0x0F]; } } // uart_debug_print(cp, newlen); print_string(cp, newlen); m_free(cp); } struct two_bytes { char a; char b; }; struct four_bytes { char a; char b; char c; char d; }; main() { char aoe[] = {0x12, 0x23, 0x45}; char *charp; int i; int big = 0x89; print_string(aoe, ARRAY_SIZE(aoe)); printf("\n"); print_hexstream((char *)((struct four_bytes *)&big), 4); printf("\n"); print_hexstream(aoe, 3); return 0; }
相关文章推荐
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
- 将数字以二进制的形式打印出来
- C和指针之函数之归以字符形式按顺序打印数字的每位数字(递归和非递归)
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
- 在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。
- 要求查询“"Welcome to Chinaworld"“中重复的字符,不区分大小写,并且打印出来每个字符出现的次数
- 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
- C语言写函数实现接收n个字符串,将以某个字符为开头的字符串打印出来。
- 当打印出来的字符不是乱码,而现实在控件或者draw出来的string是乱码时的解决方案
- Excel如何把数字信息按照字符导入Sqlserver
- 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
- C#使用结构体,输入5个人的学号,姓名,分数,按照成绩高低排列打印出来
- python根据给定的年月日以数字形式打印日期
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
- 将字符串中重复的字符打印出来
- 一个字符的ACSII码转为16进制的形式
- 【二】STM32F4 USART1 中断方式接收再将字符打印出来
- 将字符串中不同字符的个数打印出来
- 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。