osgDB.base64_encodestate
类是 osgDB::Base64Decoder
和 osgDB::Base64Encoder
的基类,并提供了用于识别字符和将字符加密的方法。
LineBreaks
该枚举类型定义了在加密过程中使用何种方式换行。有以下四种类型:
LF
:每行使用 \n
。CR
:每行使用 \r
。CRLF
:每行使用 \r\n
。NO_LINE_BREAKS
:不使用换行符。base64_encodestate(LineBreaks lb = CRLF);
lb
:可选参数,用于指定换行方式,默认为 CRLF
。virtual void encode_buffer(const void *inbuf, int inlen, char *outbuf, int *outlen);
将输入的 inbuf
数组中的数据加密后存储到 outbuf
数组中,并将加密后的数据长度存储在 outlen
变量中。
virtual void encode_final(char *outbuf, int *outlen);
解密剩余的字符并在 outbuf
中存储加密后的数据,将加密后的数据长度存储在 outlen
中。
virtual int decode_buffer(const char *inbuf, int inlen, void *outbuf, int *outlen);
解密输入 inbuf
中的加密过的数据,将解密后的数据存储到 outbuf
数组中,并将解密后的数据长度存储到 outlen
变量中。此函数返回解密的数据长度。
virtual void decode_final(char *outbuf, int *outlen);
解密剩余的字符并在 outbuf
中存储解密后的数据,将解密后的数据长度存储在 outlen
中。
void init();
重置编码器/解码器状态。
unsigned char m_accum;
int m_bits;
int m_line_len;
osg::ref_ptr<LineBreakWriter> m_line_writer;
m_accum
:存储缓存的字符。m_bits
:表示缓存的字符个数。m_line_len
:表示已编码的字符的数量。m_line_writer
:表示用于写入加密字符的线路作者的指针。#include <osgDB/Base64>
#include <osgDB/Base64>
int main()
{
const char* decodedData = "OpenSceneGraph开源三维图形库";
osgDB::Base64Encoder encoder;
int encodedSize = encoder.requiredEncodedLength(strlen(decodedData));
char* encodedData = new char[encodedSize];
encoder.encodeString(decodedData, strlen(decodedData), encodedData, encodedSize);
std::cout << "Encoded Data: " << encodedData << std::endl;
osgDB::Base64Decoder decoder;
int decodedSize = decoder.requiredDecodedLength(encodedData, strlen(encodedData));
char* decodedData2 = new char[decodedSize];
decoder.decodeString(encodedData, strlen(encodedData), decodedData2, decodedSize);
decodedData2[decodedSize] = '\0';
std::cout << "Decoded Data: " << decodedData2 << std::endl;
return 0;
}
输出:
Encoded Data: T3BlblNjZW5lU2NvdGhlc051bWJlcjPT0c9MjAxNjAzM0BzbmlwLmNvbQ==
Decoded Data: OpenSceneGraph开源三维图形库