zoukankan      html  css  js  c++  java
  • c++中byte数组与字符串的转化

    我们不讨论与字符集有关的内容,只讨论在字节流传递过程中的问题。

    我们在做一系统操作时会需要使用到数据流,比如接收网络数据,文件数据,图片数据,原始数据大多是以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);

    string 转 byte指针:

    byte* px = (byte*)str.c_str();
    int len = str.length();
  • 相关阅读:
    06-ajax发送请求-上传时注意事项
    02-git hooks是什么玩意?跟husky什么关系?
    SpringBoot配置热部署
    稀疏数组
    移动web开发——flex布局
    网站推荐
    ArrayList中的contains方法
    Java对象相等判断
    逻辑与(&)、短路与(&&)、逻辑或(|)、短路或(||)
    CentOS6.5下设置静态IP
  • 原文地址:https://www.cnblogs.com/nanfei/p/11082888.html
Copyright © 2011-2022 走看看