わかりました、これが以前に尋ねられたことは知っていますが、検索した後、適切な答えが見つかりませんでした。
バッファー (unsigned char *) を base64 に変換する必要があります。使用している base64 関数はパラメーターとして次のように取ります。
void Base64Enc(const unsigned char *src, int srclen, unsigned char *dest)
は文字列int srclen
の長さですsrc
。
私の質問は、バッファの長さをどのように取得するかです。いいえ、null で終了していません。いいえ、必要ありませんsizeof(BYTE)
。srclen
そのバッファをbase64に変換できるように、何を渡すかを知る必要があります。
編集:
ここに私がやっていることを示すいくつかのコードがあります:
unsigned char *pBytes;
unsigned char *B64Encoded;
int b64size = 0;
if (pBytes = (unsigned char *) GlobalLock(hMem))
{
DWORD size = (DWORD)GlobalSize(hMem);
b64size = size / sizeof(unsigned char);
Base64Enc(pBytes, b64size, B64Encoded);
// in this case save the buffer to a file just for testing
if (fp = fopen("ububub.txt", "wb"))
{
printf("data: %s\n", B64Encoded);
fwrite(B64Encoded, strlen(B64Encoded), 1, fp);
fclose(fp);
}
}