用户操作
[即时聊天] [发私信] [加为好友]
陈永强ID:aishen944
17506次访问,排名7134,好友0人,关注者0人。
aishen944的文章
原创 17 篇
翻译 0 篇
转载 0 篇
评论 22 篇
aishen944的公告
这里是我在编程中的一些学习的心得,希望与大家交流,共同进步!
最近评论
pilgrim_kevin:我参考你的文章顺利交叉编译了gtk+2.12.2/glib2.14.4/DirectFB-1.1.0,但是在板子上不能成功运行。我翻了一下DFB的代码,初步认为是显示驱动的色彩模式问题。我的板子上的framebuffer驱动使用YCbCr模式,视频捕捉上屏直接用的是YUV420模式,而DFB好像自动根据framebuffer var info结构的值自动将显示模式设定成16bit RGB16……
sophia:楼主:请问一下,05和03是不是名字不一样?03是mainmenu而05是menuscript?其他还有什么不一样的么?就是一般的菜单而已
me:请执行IconCleaner.exe程序 注意要安装.net framework1.1

它会自动把黑色背景去掉
wyh:得到的每个BMP还是有黑边背景?怎么去掉?
jjkcom:根本不行,提供实例代码下载看看
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 用c语言写的base64编码解码函数!收藏

    新一篇: 汇编语言程序设计读书笔记 | 旧一篇: LNetAnt(The download tool for all POXSIX platform as linux) project site is onlining!

    /* *****************************************************************************

     * Description : BASE64 encoding and decoding

     * Date             : 06-08-21 21:00

     * Author          :  aishen944

     * Copryright   : 

    ********************************************************************************/

    #include <string.h>
    #include <stdlib.h>
    #include <errno.h>

    #define BASE64_PAD64 '='

    char base64_alphabet[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
                              'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
                              'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a',
                              'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                              'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
                              't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1',
                              '2', '3', '4', '5', '6', '7', '8', '9', '+',
                              '/'};

    char base64_suffix_map[256] = {
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255,  62, 255, 255, 255,  63,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61, 255, 255,
         255, 255, 255, 255, 255,  0,   1,    2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
         15,   16,  17,  18,  19,  20,  21,  22,  23,  24,  25, 255, 255, 255, 255, 255, 255,  26,  27,  28,
         29,   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,
         49,   50,  51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
         255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};

    static char cmove_bits(unsigned char src, unsigned lnum, unsigned rnum) {
       src <<= lnum;
       src >>= rnum;
       return src;
    }

    char* base64_encode(const char *data) {
       char *ret, *retpos;
       int n, m, padnum = 0, retsize, dlen = strlen(data);

       if(dlen == 0) return NULL;

       /* Account the result buffer size and alloc the memory for it. */
       if((dlen % 3) != 0)
        padnum = 3 - dlen % 3;
       retsize = (dlen + padnum) + ((dlen + padnum) * 1/3) + 1;
       if((ret = malloc(retsize)) == NULL) 
          return NULL;
       retpos = ret;

       /* Starting to convert the originality characters to BASE64 chracaters.
          Converting process keep to 4->6 principle. */
       for(m = 0; m < (dlen + padnum); m += 3) {
          /* When data is not suffice 24 bits then pad 0 and the empty place pad '='. */
          *(retpos) = base64_alphabet[cmove_bits(*data, 0, 2)];
          if(m == dlen + padnum - 3 && padnum != 0) {  /* Whether the last bits-group suffice 24 bits. */
              if(padnum == 1) {   /* 16bit need pad one '='. */
                  *(retpos + 1) = base64_alphabet[cmove_bits(*data, 6, 2) + cmove_bits(*(data + 1), 0, 4)];
                  *(retpos + 2) = base64_alphabet[cmove_bits(*(data + 1), 4, 2)];
                  *(retpos + 3) = BASE64_PAD64;
              } else if(padnum == 2) { /* 8bit need pad two'='. */
                  *(retpos + 1) = base64_alphabet[cmove_bits(*data, 6, 2)];
                  *(retpos + 2) = BASE64_PAD64;
                  *(retpos + 3) = BASE64_PAD64;
              }
          } else {  /* 24bit normal. */
             *(retpos + 1) = base64_alphabet[cmove_bits(*data, 6, 2) + cmove_bits(*(data + 1), 0, 4)];
             *(retpos + 2) = base64_alphabet[cmove_bits(*(data + 1), 4, 2) + cmove_bits(*(data + 2), 0, 6)];
             *(retpos + 3) = base64_alphabet[*(data + 2) & 0x3f];
          }

          retpos += 4;
          data += 3;
       }

       ret[retsize - 1] =0;

       return ret;
    }

    char* base64_decode(const char *bdata) {
       char *ret = NULL, *retpos;
       int n, m, padnum = 0, retsize, bdlen = strlen(bdata);

       if(bdlen == 0) return NULL;
       if(bdlen % 4 != 0) return NULL;

       /* Whether the data have invalid base-64 characters? */
       for(m = 0; m < bdlen; ++m) {
          if(bdata[m] != BASE64_PAD64 && base64_suffix_map[bdata[m]] == 255)
             goto LEND;
       }

       /* Account the output size. */
       if(bdata[bdlen - 1] ==  '=')  padnum = 1;
       if(bdata[bdlen - 1] == '=' && bdata[bdlen - 2] ==  '=') padnum = 2;
       retsize = (bdlen - 4) - (bdlen - 4) / 4 + (3 - padnum) + 1;
       ret = malloc(retsize);
       if(ret == NULL) 
             return NULL;
       retpos = ret;

       /* Begging to decode. */
       for(m = 0; m < bdlen; m += 4) {
          *retpos = cmove_bits(base64_suffix_map[*bdata], 2, 0) + cmove_bits(base64_suffix_map[*(bdata + 1)], 0, 4);
          if(m == bdlen - 4 && padnum != 0) {  /* Only deal with last four bits. */
             if(padnum == 1)   /* Have one pad characters, only two availability characters. */
                *(retpos + 1) = cmove_bits(base64_suffix_map[*(bdata + 1)], 4, 0) + cmove_bits(base64_suffix_map[*(bdata + 2)], 0, 2);
             /*
             Have two pad characters, only two availability characters.
             if(padnum == 2) {
             }
             */
             retpos += 3 - padnum;
          } else {
             *(retpos + 1) = cmove_bits(base64_suffix_map[*(bdata + 1)], 4, 0) + cmove_bits(base64_suffix_map[*(bdata + 2)], 0, 2);
             *(retpos + 2) = cmove_bits(base64_suffix_map[*(bdata + 2)], 6, 0) + base64_suffix_map[*(bdata + 3)];
             retpos += 3;
          }
          bdata += 4;
       }

       ret[retsize - 1] = 0;

       LEND: return ret;
    }

    发表于 @ 2006年08月22日 13:22:00|评论(loading...)|编辑

    新一篇: 汇编语言程序设计读书笔记 | 旧一篇: LNetAnt(The download tool for all POXSIX platform as linux) project site is onlining!

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © aishen944