比如,我有一串字符串,string str=“1c2d4d5e6f”;
byte[] bt;怎么转换后,bt里面是十六进制形式存储的比如bt[0] 为1c,而不是十进制28,其实就是字符什么样,byte中数据和字符串是一样的,请问怎么转换呢?

解决方案 »

  1.   

    即使你把1c放到bt[0]里,它里面也都是0和1,你调试时看到的也是28,除非你改成16进制显示,先搞清楚内存中是什么
      

  2.   

    直接把字符串转成byte[]啊,为什么非要先转成数字然后再转byte[]呢。
    如果是为了节省空间,就分段截取,进制什么的都无所谓,计算机都一样是2进制,所谓的进制都是显式给你看的而已,你只要在解byte[]时都转成16进制的数字再转成字符串就好了。
      

  3.   


    我这是协议,别人定义的,自己对网络比较差这里包头网络字节BE顺序,高位在前
    包头标志(1)0x01
    包头长度(2)0x1a
            包命令码(2)0x9999
    包源地址(4)(用户0x10000-0xFFFF0000)
    包目的地址(4)(用户0x10000-0xFFFF0000)
    包体长度(2)0xef
    我这里应该怎么转换是对的? 本人这方便比较菜,比较急,谢谢
      

  4.   

    我用的方法是:现将字符串按照每两个字符分开。然后依次将这两个字符 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);
                        
                        }
      

  5.   

    或许我理解错了,不过2楼的有道理吧,按理的话,你的接收方只需要一个ascii码,当他收到28的时候,不就是1C(16进制)吗?绕了吧