您的位置:首页 > 科技 > IT业 > 手表到哪个网站买_网络工程就业前景好吗_seo超级外链工具_网上竞价平台

手表到哪个网站买_网络工程就业前景好吗_seo超级外链工具_网上竞价平台

2024/11/18 8:49:01 来源:https://blog.csdn.net/gwsong52/article/details/142933967  浏览:    关键词:手表到哪个网站买_网络工程就业前景好吗_seo超级外链工具_网上竞价平台
手表到哪个网站买_网络工程就业前景好吗_seo超级外链工具_网上竞价平台

C语言BASE32编码与解码的实现

BASE32编码

  • 二进制数据每5位分为一组,对数据进行编码
  • 字符一个字节为8位二进制,5个字节40位二进制,编码为8组
  • 比起BASE16的4位一组一分为二编码、二合为一解码,复杂程度大大增加!!!
  • 不足5位时用0填充,用"="来做为填充符号!!!
  • 练习位运算和移位运算非常有好处
  • 下面是由"&&&&&"转为"EYTCMJRG"的编码过程示意:
/*
"&&&&&" ==> "EYTCMJRG"
letter &         &         &         &         &
ascii  0010 0110 0010 0110 0010 0110 0010 0110 0010 0110
base32 00100 11000 10011 00010  01100 01001 10001 00110
index  5     18    13    2      C     9     11    6
table  E     Y     T     C      M     J     R     G
*/
  • base32_encode 编码函数,代码如下:
/* filename : base32.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>/* compile: gcc base32.c -o base32run: ./base32                *//**/
static char BT[33] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=";/* encode txt to base32 code */
char *
base32_encode (char *txt)
{int i = 0, j = 0, len = strlen (txt), n = (len / 5 + 1) * 8;char *buf = (char*) malloc (n * sizeof(char) + 1);memset (buf, 0, n+1);while (i < len){char c, t, x;c = txt[i]; i++; //#t = c >> 3; t = t & 0x1F; x = c & 0x07; x = x << 2;buf[j] = BT[t]; j++; //1if (i == len){buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++; break;}c = txt[i]; i++; //#t = c & 0xC0; t = t >> 6; t = t & 0x03; t = t | x;buf[j] = BT[t]; j++; //2t = c >> 1; t = t & 0x1F;buf[j] = BT[t]; j++; //3t = c << 4; t = t & 0x10;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++;buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0xF0; x = x >> 4; x = x & 0x0F; t = t | x;buf[j] = BT[t]; j++; //4t = c & 0x0F; t = t << 1;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0x80; x = x >> 7; x = x & 0x01; t = t | x;buf[j] = BT[t]; j++; //5t = c >> 2; t = t & 0x1F;buf[j] = BT[t]; j++; //6t = c & 0x03; t = t << 3;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0xE0; x = x >> 5; x = x & 0x07; t = t | x;buf[j] = BT[t]; j++; //7t = c & 0x1F;buf[j] = BT[t]; j++; //8}return buf;
}/* ------------------------------ *//**/
void
test_base32_encode (void)
{//char *txt = "%"; //EU======//char *txt = "%%"; //EUSQ====//char *txt = "%%%"; //EUSSK===//char *txt = "%%%%"; //EUSSKJI=//char *txt = "%%%%%"; //EUSSKJJF//char *txt = "%%%%%%"; //EUSSKJJFEU======char *txt = "Hello world!";//char *txt = "此心安处是吾乡";char *code = base32_encode (txt);printf ("SOURCE : [%s]\n", txt);printf ("  DEST : [%s]\n", code);free (code);
}/**/
int
main (int argc, char *argv[])
{test_base32_encode ();return 0;
}
/* --(.|.)-- */

编译运行,得到字符串的编码结果

songvm@ubuntu:~/works/xdn/woo$ gcc base32.c -o base32
songvm@ubuntu:~/works/xdn/woo$ ./base32
SOURCE : [Hello world!]DEST : [JBSWY3DPEB3W64TMMQQQ====]
songvm@ubuntu:~/works/xdn/woo$ 
  • 编码时逐个字符进行测试,边测试边写代码!!!

BASE32解码,解码过程就是将编码过程逆向操作

  • base32_decode 解码函数,代码如下:
/* filename : base32.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>/* compile: gcc base32.c -o base32run: ./base32                *//**/
static char BT[33] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=";/* encode txt to base32 code */
char *
base32_encode (char *txt)
{int i = 0, j = 0, len = strlen (txt), n = (len / 5 + 1) * 8;char *buf = (char*) malloc (n * sizeof(char) + 1);memset (buf, 0, n+1);while (i < len){char c, t, x;c = txt[i]; i++; //#t = c >> 3; t = t & 0x1F; x = c & 0x07; x = x << 2;buf[j] = BT[t]; j++; //1if (i == len){buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++; break;}c = txt[i]; i++; //#t = c & 0xC0; t = t >> 6; t = t & 0x03; t = t | x;buf[j] = BT[t]; j++; //2t = c >> 1; t = t & 0x1F;buf[j] = BT[t]; j++; //3t = c << 4; t = t & 0x10;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++;buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0xF0; x = x >> 4; x = x & 0x0F; t = t | x;buf[j] = BT[t]; j++; //4t = c & 0x0F; t = t << 1;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0x80; x = x >> 7; x = x & 0x01; t = t | x;buf[j] = BT[t]; j++; //5t = c >> 2; t = t & 0x1F;buf[j] = BT[t]; j++; //6t = c & 0x03; t = t << 3;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0xE0; x = x >> 5; x = x & 0x07; t = t | x;buf[j] = BT[t]; j++; //7t = c & 0x1F;buf[j] = BT[t]; j++; //8}return buf;
}/* get char index from BaseTable */
char
base32_get_index (char c)
{for (char idx = 0; idx < 33; idx++)if (BT[idx] == c) return idx;return -1;
}/* docode code to text */
char *
base32_decode (char *code)
{int i = 0, j = 0, len = strlen (code), n = len / 8 * 5;char *buf = (char*) malloc (n * sizeof(char) + 1);memset (buf, 0, n + 1);while (i < len){char t, x, c;t = base32_get_index (code[i]); i++;t = t << 3;x = base32_get_index (code[i]); i++;c = x >> 2; c = c & 0x07; c = t | c;buf[j] = c; j++;  //1c = x << 6;t = base32_get_index (code[i]); i++;if (t == 32){ buf[j] = c; j++; break; }t = t << 1; t = c | t;x = base32_get_index (code[i]); i++;c = x >> 4; c = c & 0x01; c = t | c;buf[j] = c ; j++; //2t = base32_get_index (code[i]); i++;if (t == 32) break;c = x << 4; x = t; t = t >> 1; t = t & 0x0F; c = c | t;buf[j] = c; j++; //3t = x << 7;x = base32_get_index (code[i]); i++;c = x << 2; c = c | t;t = base32_get_index (code[i]); i++;x = t >> 3; x = x & 0x03; c = c | x;if (t == 32) break;buf[j] = c; j++; //4x = base32_get_index (code[i]); i++;c = t << 5; c = c | x;if (x == 32) break;buf[j] = c; j++; //5}return buf;
}/* ------------------------------ *//**/
void
test_base32_encode (void)
{//char *txt = "%"; //EU======//char *txt = "%%"; //EUSQ====//char *txt = "%%%"; //EUSSK===//char *txt = "%%%%"; //EUSSKJI=//char *txt = "%%%%%"; //EUSSKJJF//char *txt = "%%%%%%"; //EUSSKJJFEU======char *txt = "Hello world!";//char *txt = "此心安处是吾乡";char *code = base32_encode (txt);printf ("SOURCE : [%s]\n", txt);printf ("  DEST : [%s]\n", code);free (code);
}/**/
void
test_base32_decode (void)
{//char *code = "EY======";  //&     ok!//char *code = "EYTA====";  //&&    ok!//char *code = "EYTCM===";  //&&&   ok!//char *code = "EYTCMJQ=";  //&&&&  ok!//char *code = "EYTCMJRG";  //&&&&& ok!//char *code = "EYTCMJRGEY======";  //&&&&&& ok!char *code = "JBSWY3DPEB3W64TMMQQQ====";//char *code = "42W2JZN7QPS25CPFUSCONGFP4WIL5ZFZUE======";char *txt = base32_decode (code);printf ("  DEST : [%s]\n", code);printf ("SOURCE : [%s]\n", txt);free (txt);
}/**/
int
main (int argc, char *argv[])
{test_base32_encode ();test_base32_decode ();return 0;
}
/* --(.|.)-- */

编译运行,结果如预期

songvm@ubuntu:~/works/xdn/woo$ gcc base32.c -o base32
songvm@ubuntu:~/works/xdn/woo$ ./base32
SOURCE : [Hello world!]DEST : [JBSWY3DPEB3W64TMMQQQ====]DEST : [JBSWY3DPEB3W64TMMQQQ====]
SOURCE : [Hello world!]
songvm@ubuntu:~/works/xdn/woo$ 

关于中文字符

  • 源码一定要用UTF8格式保存!!!
  • 右移时注意一定要去掉左侧补充的无效位,就是按与0!!!
  • 将测试函数中的中文字符串注释去掉

编译运行,结果如预期:

songvm@ubuntu:~/works/xdn/woo$ gcc base32.c -o base32
songvm@ubuntu:~/works/xdn/woo$ ./base32
SOURCE : [此心安处是吾乡]DEST : [42W2JZN7QPS25CPFUSCONGFP4WIL5ZFZUE======]DEST : [42W2JZN7QPS25CPFUSCONGFP4WIL5ZFZUE======]
SOURCE : [此心安处是吾乡]
songvm@ubuntu:~/works/xdn/woo$ 

文本文件的编码与解码

  • 可以将一个文本文件进行编码
  • 同样也可以将一个已编码的文本文件解码
  • 函数 test_base32_enfile (char *filename) 参数为文件名
  • 函数 test_base32_defile (char *filename) 参数为文件名

代码如下:

/* filename : base32.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>/* compile: gcc base32.c -o base32run: ./base32                *//**/
static char BT[33] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=";/* encode txt to base32 code */
char *
base32_encode (char *txt)
{int i = 0, j = 0, len = strlen (txt), n = (len / 5 + 1) * 8;char *buf = (char*) malloc (n * sizeof(char) + 1);memset (buf, 0, n+1);while (i < len){char c, t, x;c = txt[i]; i++; //#t = c >> 3; t = t & 0x1F; x = c & 0x07; x = x << 2;buf[j] = BT[t]; j++; //1if (i == len){buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++; break;}c = txt[i]; i++; //#t = c & 0xC0; t = t >> 6; t = t & 0x03; t = t | x;buf[j] = BT[t]; j++; //2t = c >> 1; t = t & 0x1F;buf[j] = BT[t]; j++; //3t = c << 4; t = t & 0x10;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++;buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0xF0; x = x >> 4; x = x & 0x0F; t = t | x;buf[j] = BT[t]; j++; //4t = c & 0x0F; t = t << 1;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; buf[j] = '='; j++; buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0x80; x = x >> 7; x = x & 0x01; t = t | x;buf[j] = BT[t]; j++; //5t = c >> 2; t = t & 0x1F;buf[j] = BT[t]; j++; //6t = c & 0x03; t = t << 3;if (i == len){x = t; buf[j] = BT[x]; j++;buf[j] = '='; j++; break;}c = txt[i]; i++; //#x = c & 0xE0; x = x >> 5; x = x & 0x07; t = t | x;buf[j] = BT[t]; j++; //7t = c & 0x1F;buf[j] = BT[t]; j++; //8}return buf;
}/* get char index from BaseTable */
char
base32_get_index (char c)
{for (char idx = 0; idx < 33; idx++)if (BT[idx] == c) return idx;return -1;
}/* docode code to text */
char *
base32_decode (char *code)
{int i = 0, j = 0, len = strlen (code), n = len / 8 * 5;char *buf = (char*) malloc (n * sizeof(char) + 1);memset (buf, 0, n + 1);while (i < len){char t, x, c;t = base32_get_index (code[i]); i++;t = t << 3;x = base32_get_index (code[i]); i++;c = x >> 2; c = c & 0x07; c = t | c;buf[j] = c; j++;  //1c = x << 6;t = base32_get_index (code[i]); i++;if (t == 32){ buf[j] = c; j++; break; }t = t << 1; t = c | t;x = base32_get_index (code[i]); i++;c = x >> 4; c = c & 0x01; c = t | c;buf[j] = c ; j++; //2t = base32_get_index (code[i]); i++;if (t == 32) break;c = x << 4; x = t; t = t >> 1; t = t & 0x0F; c = c | t;buf[j] = c; j++; //3t = x << 7;x = base32_get_index (code[i]); i++;c = x << 2; c = c | t;t = base32_get_index (code[i]); i++;x = t >> 3; x = x & 0x03; c = c | x;if (t == 32) break;buf[j] = c; j++; //4x = base32_get_index (code[i]); i++;c = t << 5; c = c | x;if (x == 32) break;buf[j] = c; j++; //5}return buf;
}/* ------------------------------ *//**/
void
test_base32_encode (void)
{//char *txt = "%"; //EU======//char *txt = "%%"; //EUSQ====//char *txt = "%%%"; //EUSSK===//char *txt = "%%%%"; //EUSSKJI=//char *txt = "%%%%%"; //EUSSKJJF//char *txt = "%%%%%%"; //EUSSKJJFEU======//char *txt = "Hello world!";char *txt = "此心安处是吾乡";char *code = base32_encode (txt);printf ("SOURCE : [%s]\n", txt);printf ("  DEST : [%s]\n", code);free (code);
}/**/
void
test_base32_decode (void)
{//char *code = "EY======";  //&     ok!//char *code = "EYTA====";  //&&    ok!//char *code = "EYTCM===";  //&&&   ok!//char *code = "EYTCMJQ=";  //&&&&  ok!//char *code = "EYTCMJRG";  //&&&&& ok!//char *code = "EYTCMJRGEY======";  //&&&&&& ok!//char *code = "JBSWY3DPEB3W64TMMQQQ====";char *code = "42W2JZN7QPS25CPFUSCONGFP4WIL5ZFZUE======";char *txt = base32_decode (code);printf ("  DEST : [%s]\n", code);printf ("SOURCE : [%s]\n", txt);free (txt);
}/* encode a file and output */
void
test_base32_enfile (char *filename)
{int i = 0, p = 0;char c, buf[161] = {0};FILE *fpi;fpi = fopen (filename, "r");if (fpi == NULL){fprintf (stderr, "Error: open file %s error!\n", filename);return ;}c = fgetc (fpi);while (c != EOF){buf[i] = c; i++;if (i == 160){i = 0; p++;char *cbuf = base32_encode (buf);printf ("%s", cbuf);free (cbuf);memset (buf, 0, 161);}c = fgetc (fpi);}if (i < 161){char *cbuf = base32_encode (buf);printf ("%s", cbuf);free (cbuf);}printf ("\n");fclose (fpi);
}/* decode a file and output */
void
test_base32_defile (char *filename)
{char c, buf[161] = {0};int i = 0, p = 0;FILE *fpi = fopen (filename, "r");if (fpi == NULL){fprintf (stderr, "Error: open file %s error!\n", filename);return ;}c = fgetc (fpi);while (c != EOF){buf[i] = c; i++;if (i == 160){i = 0; p++;char *cbuf = base32_decode (buf);printf ("%s", cbuf);memset (buf, 0, 161);free (cbuf);}c = fgetc (fpi);}if (i < 161){char *cbuf = base32_decode (buf);printf ("%s", cbuf);free (cbuf);}printf ("\n");fclose (fpi);
}/**/
int
main (int argc, char *argv[])
{//test_base32_encode ();//test_base32_decode ();test_base32_enfile ("boo.txt");//test_base32_defile ("bar.txt");return 0;
}
/* --(.|.)-- */

从网页上复制了一段新闻,保存到boo.txt文件中,编译运行,结果如下:

songvm@ubuntu:~/works/xdn/woo$ gcc base32.c -o base32
songvm@ubuntu:~/works/xdn/woo$ ./base32
42LLBZMNR3T2JPXFRSL6JOVMGEYONHEIHDTJPJPHSS267PEI5CXLB2EAQXSYNL7GVWDOPBFW4OAIDZMITDTJ3KHPXSE6LJEW4S5KJ2MDVDSY7EPIVCAOJOV242XZXZNOQE4ONF5F5CQ2RZ5EXLX3ZDHCQCOOJOFN4WN33ZVYXDRIBHPHTKCOLDMH424KT354RTTJRPXHUS5OJOUG4S4K3ZM3XXTZVBHFSC4OLPEV4WFJXZMSRTS3ZAHGSS7OLJ5742AIDY4AQLTKZIXIX6HONG5U4WSJVZNES3SZXPPGTSF6LD4L42O2LZMNR3TJPBPIUGGO7PEM42WKH2FVR7T35DXEXC66LMNR42ZLH354RTTIJH7HT6S6TLMF4WFJXZFYVXSZXPPDQCBAVZN5SPTJPJPEX2F6RIMM5CXLB2EAQXSLZGXEXCFO7PEM42OIT2FOWDUIBBPJS6XO7PE24WSJVZNOW3TJPBPGXC4OLONT4WH3BZUVWDTI3LXGTC7OPJF2566IZYUATTSY3APEXCAOFAE54WAYPZU4T7TJZH7JS62O7PEM4WC2LZNCQPTLROHIV2ROLDMV5GDY7ZMQRTTK7FHFUKPOTFN74WC23ZUISDS3PJXFR6Z67PEM5CXLRZNETLSZ7DXFXCBONCEQ4S4LVZNES3SZXPPGXC4OLLVC46NIJZ4DVXUZPKHHTOXOPGUE4WOLBY4AQLTIREPEXOWOJOM742Z2RZUER7SYRMHPXSGORP4R42OJ7ZNES3SLVJHJQOUOPLMJ46N3RZMFWPUYHKHJS6UONDEB46523ZMHXLSY7MHFUSLOLG554S5LVZMFUXS2FA7EX276LCFJ4WGJNZUOVLTJNPPDQCBOLD4R5CUIBZF2XLTJZCPEXWK6RP434S4IBZVNUXUK7BHIV25O7PE7BLTK7G7FV2A6RINI46SLV354RTRIBHHEXCW6LG55424LRYUATXTZVBHFRWD6NOFJ566IZZUYX3T2JOXEXKDOJOFN4WN33Z42QTSZBOHFXSK6LCU34WJIZZN4QDTJJPXFU676NAEB4OAIFZFYVXSZXPPFW6ZOLEEMGI2OJOFK4WN33ZNOW3S25HXHR2YOLBNI5GO2FZF2SLSYLDPHVW7ORL4B566IZZNPXEYTNZFYVLSZXPPFV23OLLU65CQYZZMFRXT23PXFQWS6LIUD42KL7Z5NS3X3ZDHFV64TKNHEXCVOLG554WXLNZNOT3UKDDBXGLS3BD7GS63ONCEWGE2DJZNQR7TJPNXIX6D6LIUD4WCY3Z5NX3X3ZDHFUSLOLG55424LRZNOULTJ3JPFRWHONNMB46UIXZFYRXTJNLPHV2AOLDEW566IZZM4VDSY3DXEXWJ6TKUM4S4I3ZUWVXSLZGHFRSLOHAECBLRIBHHGRWXONCER4S5IN2FHUPX3ZDHFRSL6JOVM42HKRZMHXLSLVBXDQCFOLIUD4WSJNZMITXTKZIPGTWS6JOVM4S5LVZMRTDSZ7DXFXCBONHEN4WFKDZUMQ7SY3F7DQCF67PEM46Z3XZ53T7TI7EHEX2N6LEEE46Y3XZ4UT7TLJO7GTSG6LCVB4S72DZUBV7RYBAXEXCFONNNX4WOKRZMHXLT2PH7IXWTOLEUM4WOLB2MTQHT2XGPJQWG6LJEH4WSJNZMNUHTJJL7EXOMORLV64WSIPY4AQLTIREHJQO66HAEB5CS37ZNORHT23CJY4S4KVZM7R3S3RAXGVWR6RL4V46BLTZF6X7SYRKPGTWS6LDMO4S5LVZMRTDTJJL7EXOMOPGUE42LLBZFYX3TI5KXDQCBOFAE542XZXZNOQHUK7NHDQCBAVZVPTPS25APIUGUOPJF2566IZZFYVXSZXPPFXSAONFF646NIJZNEU7UZPKHEXSNORNUK4W6IB2FWRLS2JJ7PXSGOLB524WC2LZNCQPSL5P7FRCU6LDEW42YLJZNZWPSLZGXEXCG6NFVN42HZBZMNQ7RYBAXGVSRORP4O42N3JZNETLS2JFXFTO66NHEL4WHYXZU5UXSY3DXGS6C6RIMM566IZZVMUPULLD7HX2HOJOF54WY3DZVSWPX3ZDHGQSP6PH5F5GWYLZMKTPSLRLPFTO66HAECBI======
songvm@ubuntu:~/works/xdn/woo$ 

将上面的结果复制到bar.txt文件中,将test_base32_defile (“bar.txt”);函数注释打开,把上一行注释掉,编译运行,结果如下:

songvm@ubuntu:~/works/xdn/woo$ gcc base32.c -o base32
songvm@ubuntu:~/works/xdn/woo$ ./base32
新华社北京10月8日电(记者冯歆然、刘杨)外交部发言人毛宁8日表示,“中国游”的升温,显示了中国的吸引力和开放姿态。欢迎更多外国朋友来华旅行,欣赏美丽山河,感知魅力中国。
当日例行记者会上,有记者问:多家旅游平台数据显示,“十一”假期期间,入境游订单量同比增长六成左右,许多城市成为外国游客的热门目的地。我们也注意到,近期外交部等相关部门持续出台外国人入境便利化措施。发言人有何进一步评论?
毛宁表示,“中国游”的升温,显示了中国的吸引力和开放姿态。中国已同24个国家实现全面互免签证,对16个国家实行免签入境政策,对54个国家实行72小时或144小时过境免签,外国游客来华流程不断简化,在华体验不断优化。
“据我了解,北京推出了《境外初次来京人员城市服务指南》,系统提供各类生活服务信息。上海在出租车和地铁站配备外卡支付设备。成都、西安等8个城市正试点便利来华人员支付的新举措。”毛宁说。
毛宁表示,中国开放的大门会越开越大,出入境便利化水平会不断提升。欢迎更多外国朋友来华旅行,欣赏美丽山河,感知魅力中国。songvm@ubuntu:~/works/xdn/woo$ 
  • 达到预期目标,下一步研究BASE64编码与解码!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com