函数如何返回一个BYTE数组
函数怎么返回一个BYTE数组
现在有一VC++函数GetValue(),需要返回一组数据,给其他调用该函数的人。
我用
BYTE *GetValue()
{
BYTE buf[4] = {0x01,0x00,0x00,0x01};
return buf;
}
获取方
BYTE temp[4] = {0};
temp = GetValue();
最后只能得到0x01,后面的0x00会被认为空字符截断。
难道VC中不能让函数返回真正的BYTE数组吗,像C#中直接用 public static byte[] GetValue().
我用vs2010编译器。
------解决方案--------------------
buf指向的是数组的首地址,temp也是首地址,指向temp[0],后面数组取出来要用temp[1],temp[2]...
------解决方案--------------------
最后只能得到0x01,后面的0x00会被认为空字符截断。
你怎么知道被截断了?你把它当成字符串看,它就截断了。
难道在你的眼里只有字符串吗?
抛开你返回临时变量这上问题不说(这与你的问题无关),你凭什么说被截断了,依据是什么?我看你的代码没有问题。
难道你只会messagebox或者printf来查看数组吗?字符串只是数组的一个特例而已。
------解决方案--------------------
BYTE *GetValue()
{
BYTE buf[4] = {0x01,0x00,0x00,0x01};//这个是局部变量能返回码? return buf;
}
BYTE *pBuf=new BYTE[4];
pBuf->=1;
pBuf++;
...
return pBuf;
注意用完:
delete []pBuf;
现在有一VC++函数GetValue(),需要返回一组数据,给其他调用该函数的人。
我用
BYTE *GetValue()
{
BYTE buf[4] = {0x01,0x00,0x00,0x01};
return buf;
}
获取方
BYTE temp[4] = {0};
temp = GetValue();
最后只能得到0x01,后面的0x00会被认为空字符截断。
难道VC中不能让函数返回真正的BYTE数组吗,像C#中直接用 public static byte[] GetValue().
我用vs2010编译器。
------解决方案--------------------
buf指向的是数组的首地址,temp也是首地址,指向temp[0],后面数组取出来要用temp[1],temp[2]...
------解决方案--------------------
最后只能得到0x01,后面的0x00会被认为空字符截断。
你怎么知道被截断了?你把它当成字符串看,它就截断了。
难道在你的眼里只有字符串吗?
抛开你返回临时变量这上问题不说(这与你的问题无关),你凭什么说被截断了,依据是什么?我看你的代码没有问题。
难道你只会messagebox或者printf来查看数组吗?字符串只是数组的一个特例而已。
------解决方案--------------------
BYTE *GetValue()
{
BYTE buf[4] = {0x01,0x00,0x00,0x01};//这个是局部变量能返回码? return buf;
}
BYTE *pBuf=new BYTE[4];
pBuf->=1;
pBuf++;
...
return pBuf;
注意用完:
delete []pBuf;