Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1252602
  • 博文数量: 168
  • 博客积分: 3483
  • 博客等级: 中校
  • 技术积分: 1696
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 13:17
文章分类

全部博文(168)

文章存档

2015年(6)

2014年(9)

2013年(47)

2012年(11)

2011年(13)

2010年(18)

2009年(11)

2008年(42)

2007年(11)

分类:

2008-02-16 21:12:48

#include

/*
 * 查看从地址addr开始的bytes字节的二进制状态。
 */
int
see_binary(char * addr, int bytes)
{
        unsigned char mask = 1;
        int i, j;
        int newline = 0;

        for (i = 0; i < bytes; ++i) {
                newline = !(i%4);
                newline && printf("\n%p: ", &addr[i]);

                for (j = 7; j >= 0; --j) {
                        printf("%d ", ((mask << j) & addr[i]) ? 1 : 0);
                }
                putchar(' ');
        }
        putchar('\n');

        return 0;
}

/*
 * 带高亮显示的版本,,
 */
int
see_binary(char * addr, int bytes)
{
        unsigned char mask = 1;
        int i, j;
        int newline = 0;
        char *CL_NULL = "\033[0m";
        char *CL_BLUE = "\033[34m";
        char *CL_HBLUE = "\033[1;34m";

        for (i = 0; i < bytes; ++i) {
                newline = !(i%4);
                newline && printf("\n%p: ", &addr[i]);

printf(CL_HBLUE);
                for (j = 7; j >= 0; --j) {
                        printf("%d ", ((mask << j) & addr[i]) ? 1 : 0);
                }
printf(CL_NULL);
                putchar(' ');
        }
        putchar('\n');

        return 0;
}



阅读(1272) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-07-03 09:36:32

for (i = 0; i < bytes; --i) 该改成++i吧? 改过之后测试运行结果不对啊,用char p[7]="123456";测试的