C base64 代码编写
时间: 2024-04-23 08:19:30 浏览: 76
C语言Base64 编码
C语言中的Base64编码是一种将二进制数据转换为可打印字符的编码方式。下面是一个简单的C语言实现Base64编码的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
char* base64_encode(const unsigned char* data, size_t input_length, size_t* output_length) {
*output_length = 4 * ((input_length + 2) / 3);
char* encoded_data = malloc(*output_length + 1);
if (encoded_data == NULL) {
return NULL;
}
for (size_t i = 0, j = 0; i < input_length;) {
uint32_t octet_a = i < input_length ? data[i++] : 0;
uint32_t octet_b = i < input_length ? data[i++] : 0;
uint32_t octet_c = i < input_length ? data[i++] : 0;
uint32_t triple = (octet_a << 16) + (octet_b << 8) + octet_c;
encoded_data[j++] = base64_table[(triple >> 18) & 0x3F];
encoded_data[j++] = base64_table[(triple >> 12) & 0x3F];
encoded_data[j++] = base64_table[(triple >> 6) & 0x3F];
encoded_data[j++] = base64_table[triple & 0x3F];
}
for (size_t i = 0; i < (*output_length % 4); i++) {
encoded_data[*output_length - 1 - i] = '=';
}
encoded_data[*output_length] = '\0';
return encoded_data;
}
int main() {
const unsigned char data[] = "Hello, World!";
size_t input_length = strlen((const char*)data);
size_t output_length;
char* encoded_data = base64_encode(data, input_length, &output_length);
printf("Base64 Encoded Data: %s\n", encoded_data);
free(encoded_data);
return 0;
}
```
这段代码实现了一个简单的Base64编码函数`base64_encode`,它接受一个`unsigned char`类型的数据指针、输入数据长度和一个指向输出数据长度的指针。函数返回一个动态分配的字符数组,存储了Base64编码后的结果。
阅读全文