c++ string 转换为pbyte 数组,该怎么处理
c++ string 转换为pbyte 数组
本人菜鸟刚刚接触c++
需要亲们帮帮忙写个函数转换的方法
将字符串:
string str=“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsG9CRP764trINtS05BAkk35RGk0AiBMMyCMimYCLHbg==”
在用c++编写dll时候需要将上述字符串返回给转换为 BYTE* 即参数*target
int sm2encrypt(ECCPUBLICKEYBLOB *publickey,BYTE *source,OUT BYTE *target)
------解决方案--------------------
------解决方案--------------------
是要把字符串转换成二进制数据, 还是保留字符串直接给target.
如果保留字符串,1楼已经给出答案了.
BYTE 实际是unsigned char. 上面的代码可能需要修改成: strcpy((char*)target, str.c_str());
------解决方案--------------------
target = (BYTE*)str.c_str();
------解决方案--------------------
------解决方案--------------------
强制转换太粗暴了
------解决方案--------------------
既然是外面传进来的参数,应该是分配了内存的,使用strcpy(target, str.c_str());即可
如果三楼这样写的话是错误的,对指针赋值也应该是个二级指针才行
本人菜鸟刚刚接触c++
需要亲们帮帮忙写个函数转换的方法
将字符串:
string str=“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsG9CRP764trINtS05BAkk35RGk0AiBMMyCMimYCLHbg==”
在用c++编写dll时候需要将上述字符串返回给转换为 BYTE* 即参数*target
int sm2encrypt(ECCPUBLICKEYBLOB *publickey,BYTE *source,OUT BYTE *target)
------解决方案--------------------
strcpy(target, str.c_str());
------解决方案--------------------
是要把字符串转换成二进制数据, 还是保留字符串直接给target.
如果保留字符串,1楼已经给出答案了.
BYTE 实际是unsigned char. 上面的代码可能需要修改成: strcpy((char*)target, str.c_str());
------解决方案--------------------
target = (BYTE*)str.c_str();
------解决方案--------------------
#include <climits>
#if CHAR_MIN == SCHAR_MIN
inline bool helper(char c, unsigned char & uc)
{
if(c >= 0)
{
uc = (unsigned char)c;
return true
}
return false;
}
#else
inline bool helper(char c, unsigned char & uc)
{
uc = c;
return true;
}
#endif
------解决方案--------------------
强制转换太粗暴了
------解决方案--------------------
既然是外面传进来的参数,应该是分配了内存的,使用strcpy(target, str.c_str());即可
如果三楼这样写的话是错误的,对指针赋值也应该是个二级指针才行