C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了unsigned char *指向的内存区域大小是多少?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,我知道之前已经问过这个问题,但在搜索之后我找不到合适的答案.

我需要将缓冲区(unsigned char *)转换为base64,我使用的base64函数作为参数:

void Base64Enc(const unsigned char *src,int srclen,unsigned char *dest)

其中int srclen是src字符串的长度.

我的问题是,如何获得缓冲区的长度.不,它不会终止.不,我不想要sizeof(BYTE).我只需要知道传递给srclen的内容,这样我就可以将缓冲区转换为base64.

编辑:

这里有一些@L_675_3@显示了我在做什么:

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);
    }
}

解决方法

如果它不是NULL终止或终止某些东西,了解大小的唯一方法是在第一次获得它时跟踪它.

你是如何获得缓冲区的?无论如何,这可能会为您提供一种获取缓冲区长度的方法.

编辑

你的评论

在这种情况下,获取原始大小并将其除以每个元素的大小以获得元素数量

unsigned numelem = size / sizeof(unsigned char)

由于Todd Gardner指出sizeof(unsigned char)由标准定义为1,因此缓冲区中的元素数量只是缓冲区使用的空间量.

“按元素大小划分”是对任何类型元素的更通用的解决方案.

大佬总结

以上是大佬教程为你收集整理的unsigned char *指向的内存区域大小是多少?全部内容,希望文章能够帮你解决unsigned char *指向的内存区域大小是多少?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。