c++中byte数组与字符串的转化

c++中通常用 unsigned char 代表字节,所以有   

typedef unsigned char 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();

 

posted on   空明流光  阅读(44178)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示