我们不讨论与字符集有关的内容,只讨论在字节流传递过程中的问题。
我们在做一系统操作时会需要使用到数据流,比如接收网络数据,文件数据,图片数据,原始数据大多是以byte数组的形式提供,与其它语言(c#,java)交互时也是如此。
c++中byte数组是不能传递的,byte指针倒是可以传递,但我一直拿不到正确的长度(或许只是我没找对方法)。我在网上也很少能找到string转byte[]或byte[]转string的例子,即使有,基本上也不能使用。
最终找到的方法是使用std::string代替byte[]进行接口传递,比如方法参数,一个string参数就够了。但如果传递byte指针,则再需要传递一个长度参数,太过麻烦。
byte数组转string:
byte key[16];
key[0] =48 ;
key[1] =49 ;
key[2] =50 ;
key[3] =51 ;
key[4] =52 ;
key[5] =53 ;
key[6] =54 ;
key[7] =55 ;
key[8] =56 ;
key[9] =57 ;
key[10] =65 ;
key[11] =66 ;
key[12] =67 ;
key[13] =68 ;
key[14] =69 ;
key[15] =70 ;
char* p = new char[sizeof(key)];
memcpy(p,key,sizeof(key));
p[sizeof(key)] = 0;
string str(p);
解决
参考自:https://bbs.csdn.net/topics/390314764
string(char*,lenth);