gpt4 book ai didi

c - 我是否正确地使用 OpenSSL 对缓冲区进行了 base64 编码?

转载 作者:太空狗 更新时间:2023-10-29 15:41:17 28 4
gpt4 key购买 nike

我有这个缓冲区:

unsigned char *buffer; 
int buffer_length;

这就是我目前将其转换为 base64 编码缓冲区的方式:

BIO *mem = BIO_new(BIO_s_mem()); 
BIO *b64 = BIO_new(BIO_f_base64());
mem = BIO_push(b64, mem);

int write_length = BIO_write(mem, buffer, buffer_length);
if (write_length != buffer_length) //*
return -1;

int flush_result = BIO_flush(mem);
if (flush_result != 1)
return -1;

unsigned char *result; //**
int result_length = BIO_get_mem_data(mem, &result);

//use the base64-encoded result to do whatever I need to do

BIO_free_all(mem);
return 0;

到目前为止,这似乎奏效了。然而,这是好的和健壮的代码吗?我对上面标有星号的代码片段有特别的疑问:

  • (//*) 假设 BIO_write() 总是一次写出整个 base64 编码的字符串是正确的,还是我必须创建循环在这里?
  • (//**) unsigned char* 类型是否正确,还是我必须改用 char *?<

最佳答案

//* 你应该把你的 BIO_write() 放在一个循环中。手册页对此非常清楚(它尝试写入请求的字节数),这与 C 中的其他写入内容一致。

//** 您应该使用 char * 因为这是手册页指定的内容,尽管我不确定这有什么大不了的。

关于c - 我是否正确地使用 OpenSSL 对缓冲区进行了 base64 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565045/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com