做wireshark的http实验的时候,看到有个基于Base64编码的账号和密码,想到我啥都没做过,而且看着做这个不难,于是就自己用c++写了个简易版本。
没有系统学过c++,导致我对两个string的连接很迷,本来后面想用c的char*,后来才发现是我在定义主string的给它赋予了容量和初值string code(n,0)
,我以为副string的连接是从主string的第一个即code[0]
开始,但其实是从主string最后的一个字符即code.size()
连,所以就导致,前面一大堆无用的空格,加深了我对string连接的印象,还是可以的,我试了一下,一般的编码解码应该是能做到的,写了大概5个小时,收获还是有,就是太慢了。。
#include <algorithm>
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
class Solution
{
private:
const string base64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
unordered_map<char, int> base64;
void initial_map()
{
int i;
for (i = 0; base64_table[i] != '\0'; i++)
{
base64[base64_table[i]] = i;
}
}
string jinZhi(int n, string &str) //数字转str.size()位 01字符串
{
int i;
for (i = 0; i < (int)str.size(<