byte[]转换为string,然后又将string转换byte[]数据怎么会少了一位?急.. 我首先将byte[]转换为string,然后又把这个string转成byte[],原来byte[]长度是42,转换回来之后变成了41, 数据怎么少了一位? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 开始那个 byte[] 怎么来的?看看开始几个字节是否有区别可能 BOM 的缘故 byte[] bytes = new byte[] { 2, 1, 3, 0, 0, 1, 0, 0, 218, 0, 42, 0, 0, 0, 0, 0, 0, 0, 65, 76, 65, 82, 77, 32, 72, 101, 97, 114, 116, 66, 101, 97, 116, 58, 57, 58, 53, 56, 58, 48, 52 }; Console.WriteLine("bytes数据长度:" + bytes.Length); string strData = Encoding.Default.GetString(bytes); byte[] bufData = Encoding.Default.GetBytes(strData); Console.WriteLine("bufData数据长度:" + bufData.Length);代码就是这样 你理解 Default 是什么意思吗?通常在.net是unicode。那么很简单,在string传递、计算过程中,不符合unicode规则的内容被过滤掉了,剩下的是正常的unicode内容。你用这种方式“转换”,没有足够的根据! 那不是还剩下10头猪吗?应为我的服务器是C语言开发的,传过来我这边的数据要转换成16进制的形式接收,default不是转换为16进制吗? 转换成16进制,你用错了方法了,试下这个string strData = BitConverter.ToString(bytes); Encoding.Default.GetString是把Ansi编码的byte数组,转为相应的字符串而你的bytes中存放的不是Ansi编码的byte数组 BitConverter.ToString得到的十六进制字符串是以'-'隔开的,如果你不要'-',那么string strData = BitConverter.ToString(bytes).Replace("-",""); WPF textbox 求问C#大神 winform的表格实现 怎么判断改字符串 "20190902"是合法日期 拿到优盘的序列号后如何访问优盘 C#五子棋关于斜方向问题求助 关机有问题 谁能指教一下!关于页面传值的问题 C#界面 WPF界面假死,但是后台操作都可以执行,事件有响应 sql语句中关于UPDATE的语法问题 一般处理程序如何实现树形菜单
看看开始几个字节是否有区别可能 BOM 的缘故
Console.WriteLine("bytes数据长度:" + bytes.Length);
string strData = Encoding.Default.GetString(bytes);
byte[] bufData = Encoding.Default.GetBytes(strData);
Console.WriteLine("bufData数据长度:" + bufData.Length);
代码就是这样
转换成16进制,你用错了方法了,试下这个
string strData = BitConverter.ToString(bytes);
是把Ansi编码的byte数组,转为相应的字符串
而你的bytes中存放的不是Ansi编码的byte数组