Хорошо, я знаю, что об этом уже спрашивали, но после поиска я не смог найти правильный ответ.
Мне нужно преобразовать буфер (unsigned char *) в base64, использующаяся функция base64 принимает в качестве параметров:
void Base64Enc(const unsigned char *src, int srclen, unsigned char *dest)
, где int srclen
- длина строки src
.
Мой вопрос: как мне определить длину моего буфера? Нет, это не нулевое окончание. Нет, я не хочу sizeof(BYTE)
. Мне просто нужно знать, что передать как srclen
, чтобы я мог преобразовать этот буфер в base64.
EDIT
Вот код, показывающий, что я делаю:
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);
}
}