【发布时间】:2009-06-23 21:05:07
【问题描述】:
好的,我知道之前有人问过这个问题,但搜索后我找不到正确的答案。
我需要将一个缓冲区(unsigned char *)转换为base64,我使用的base64函数作为参数:
void Base64Enc(const unsigned char *src, int srclen, unsigned char *dest)
其中int srclen 是src 字符串的长度。
我的问题是,我如何获得缓冲区的长度。不,它不是空终止的。不,我不想要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);
}
}
【问题讨论】: