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();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战