读书人

【超难】BSTR传输包含NULL字符串的有关

发布时间: 2012-03-14 12:01:12 作者: rapoo

【超难】BSTR传输包含NULL字符串的问题
我现在有一个数据包,这个数据包包含NULL字符串,即\0,绝对0,一般C++程序认为这个是字符串结束标志,但是这个报文中间是包含这个字符的,就是说NULL后面还有内容的,我知道这个数据包的长度,如下:
加上
char a[5]={0x02,0x03,0x00,0x04};
BSTR b;

如何将a赋值给b?BSTR并不是以绝对0为结尾的,书上说,bstr在开头有个位置记录BSTR字符串的长度!
找了好久找不到答案,郁闷!!!!请求高手帮忙

[解决办法]
SysAllocStringLen

就可以了

[解决办法]
BSTR就是wchar_t*,哪来的记录长度的地方。
BSTR b=::SysAllocStringByteLenA(a,5);
[解决办法]
有0就是二进制数据了,自己用BYTE数据来保存和修改,并且定义一个变量保存长度
[解决办法]

探讨
有0就是二进制数据了,自己用BYTE数据来保存和修改,并且定义一个变量保存长度

[解决办法]
探讨

BSTR就是wchar_t*,哪来的记录长度的地方。
BSTR b=::SysAllocStringByteLenA(a,5);

[解决办法]
探讨

非常感谢各位的回答,但是有一个问题

假设
CString test="hello world";
BSTR b=test.AllocSysString(); //我发现b是宽字符格式的即在每个字符之后都会添加\0

但是,如果这样
char a[5]={0x02,0x03,0x00,0x04};
BSTR b = SysAllocStringByteLen( a , 5 ……

[解决办法]
探讨

楼上的意思是说对于char a[5]={0x02,0x03,0x00,0x04};
是不能赋值为一个unicode的字符串吗,我需要的串就是要unicode化的,所以SysAllocStringByteLen不能满足我的要求。

读书人网 >VC/MFC

热点推荐