base64解码C代码
时间: 2024-06-19 09:01:08 浏览: 167
Base64编解码的C源码
Base64编码是一种常用的将二进制数据转换成ASCII文本的方法,而Base64解码则是将这些文本转换回原始数据。在C语言中,你可以使用标准库中的`base64_decode`函数或者自定义函数来实现Base64解码。以下是一个简单的自定义Base64解码函数的例子:
```c
#include <stdio.h>
#include <string.h>
// Base64字符映射表
static const char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
// 自定义Base64解码函数
size_t base64_decode(char* input, size_t input_len, unsigned char* output)
{
char inbuf, outbuf;
int i, j, k;
size_t out_len = 0;
for (i = 0; i < input_len; i += 4) {
if (i == input_len) break; // 如果不够4个字符,填充剩余
// 读取4个输入字符
for (j = 0; j < 4 && i+j < input_len; j++) {
inbuf[j] = base64_table[input[i+j]];
}
// 填充剩余字符
while (j < 4) {
inbuf[j++] = '='; // '='表示填充
}
// 解码4个Base64字符到3个字节
for (k = 0; k < 3; k++) {
outbuf[k] = (inbuf[k * 6 & 0x3F] << 2) | (inbuf[k * 6 + 1 & 0x3F] >> 4);
if (inbuf[k * 6 + 1 & 0x3F] & 0x0F) { // 如果第二个字符存在
outbuf[k] |= (inbuf[k * 6 + 2 & 0x3F] << 4);
}
if (inbuf[k * 6 + 3 & 0x3F] != '=') { // 如果第三个字符存在
outbuf[k] |= inbuf[k * 6 + 3 & 0x3F];
}
output[out_len++] = outbuf[k];
}
}
return out_len;
}
int main()
{
char encoded[] = "SGVsbG8gV29ybGQh"; // Base64编码的"Hello World!"
unsigned char decoded[50]; // 假设最多能解码50字节
size_t len = base64_decode(encoded, strlen(encoded), decoded);
printf("Decoded: %.*s\n", (int)len, decoded);
return 0;
}
```
阅读全文