想请教下,怎么把十六进制原样存入到byte[]中? 比如,我有一串字符串,string str=“1c2d4d5e6f”;byte[] bt;怎么转换后,bt里面是十六进制形式存储的比如bt[0] 为1c,而不是十进制28,其实就是字符什么样,byte中数据和字符串是一样的,请问怎么转换呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 即使你把1c放到bt[0]里,它里面也都是0和1,你调试时看到的也是28,除非你改成16进制显示,先搞清楚内存中是什么 直接把字符串转成byte[]啊,为什么非要先转成数字然后再转byte[]呢。如果是为了节省空间,就分段截取,进制什么的都无所谓,计算机都一样是2进制,所谓的进制都是显式给你看的而已,你只要在解byte[]时都转成16进制的数字再转成字符串就好了。 我这是协议,别人定义的,自己对网络比较差这里包头网络字节BE顺序,高位在前 包头标志(1)0x01 包头长度(2)0x1a 包命令码(2)0x9999 包源地址(4)(用户0x10000-0xFFFF0000) 包目的地址(4)(用户0x10000-0xFFFF0000) 包体长度(2)0xef我这里应该怎么转换是对的? 本人这方便比较菜,比较急,谢谢 我用的方法是:现将字符串按照每两个字符分开。然后依次将这两个字符 Convert.ToByte()。如:byte[] buf = new byte[str.Length/2]; //这里自己要加判断,看你的字符串是偶数个吗?不是怎么处理?靠你自己了 for (int i = 0; i < str.Length; i++) { buf[i] = Convert.ToByte(str.Substring(i*2, 2),16); } 或许我理解错了,不过2楼的有道理吧,按理的话,你的接收方只需要一个ascii码,当他收到28的时候,不就是1C(16进制)吗?绕了吧 求教:在同一个项目中如何动态添加引用? 用Dotfuscator混淆强名称的winform出错 问题没有解决掉,继续寻求帮助 Script.FileSystemObject和File类的区别 求一个c#编写的c/s结构的上传代码 还是C#datagridview问题 窗体的height怎么不超过780?? winform客户端调用wcf后宿主程序增加几百内存的开销无法释放 字段与属性哪个执行效率更高? 帮忙,怎么用DATASET象用ADO一样对字段赋值???? C# 数字签名是干什么的,怎么用? 如何判断双击的是不是treeview的最下层一个节点呢
如果是为了节省空间,就分段截取,进制什么的都无所谓,计算机都一样是2进制,所谓的进制都是显式给你看的而已,你只要在解byte[]时都转成16进制的数字再转成字符串就好了。
我这是协议,别人定义的,自己对网络比较差这里包头网络字节BE顺序,高位在前
包头标志(1)0x01
包头长度(2)0x1a
包命令码(2)0x9999
包源地址(4)(用户0x10000-0xFFFF0000)
包目的地址(4)(用户0x10000-0xFFFF0000)
包体长度(2)0xef
我这里应该怎么转换是对的? 本人这方便比较菜,比较急,谢谢
{ buf[i] = Convert.ToByte(str.Substring(i*2, 2),16);
}