请问,十六进制的数据:[09 B1 4F 50 44 4F 4F 52 00 B8],转成字符串应该是什么?
十六进制的数据:[2E 2E 4F 50 44 4F 4F 52 2E 2E],转成字符串应该是什么?
用代码如何实现?

解决方案 »

  1.   

                int x = 0xB1;            Console.WriteLine(x.ToString());   //177
                Console.WriteLine(x.ToString("X")); //B1
      

  2.   

    byte[] bDate = new byte[] { 0x09, 0xB1, 0x4F, 0x50, 0x44, 0x4F, 0x4F, 0x52, 0x00, 0xB8 };
                string str = string.Empty;
                for (int i = 0; i < bDate.Length; i++)
                {
                    str += Convert.ToString(bDate[i], 16);
                }
                this.textBox1.Text = str;
    这样转出来是 9b14f50444f4f520b8
    byte[] bDate = new byte[] { 0x09, 0xB1, 0x4F, 0x50, 0x44, 0x4F, 0x4F, 0x52, 0x00, 0xB8 };
                string str = string.Empty;
                for (int i = 0; i < bDate.Length; i++)
                {
                    str += Convert.ToString(bDate[i], 10);
                    
                }
                this.textBox1.Text = str;
    这样是出来是:91777980687979820184。
    09=>9
    B1=>117
      

  3.   

    System.Text.Encoding.UTF8.GetString(byte[]);
      

  4.   

    创建一个类,CommClass,提供如下的方法:        public static string HexStringToString(string hs, Encoding encode)
            {
                //以%分割字符串,并去掉空字符
                string[] chars = hs.Split(new char[] { '%' }, StringSplitOptions.RemoveEmptyEntries);
                byte[] b = new byte[chars.Length];
                //逐个字符变为16进制字节数据
                for (int i = 0; i < chars.Length; i++)
                {
                    b[i] = Convert.ToByte(chars[i], 16);
                }
                //按照指定编码将字节数组变为字符串
                return encode.GetString(b);
            }然后使用这样的方法:            string[] bDate = new string[] { "0x09", "0xB1", "0x4F", "0x50", "0x44", "0x4F", "0x4F", "0x52", "0x00", "0xB8" };
                string str = string.Empty;
                for (int i = 0; i < bDate.Length; i++)
                {
                    str += CommClass.HexStringToString(bDate[i], Encoding.Default);            }
                Console.WriteLine(str);输出的结果是:
    \t?OPDOOR\0?
      

  5.   

    字节转字符 需要知道编码才行。
    一般来说都是下面3个编码中的一个
    UTF-8
    Unicode (UTF-16)
    GB2312
      

  6.   

    你这个编码就是ASCII直接转字符
    用Encoding.ASCII  UTF-8 或者直接 
    (char)0x4F   (char)0x50    (char)0x44转换就行
    结果是DPDOOR 前后两个字节估计是标识
      

  7.   

    如果对应的字符是中文的,那么UTF8是不管用的,必须使用Default或者GetEncoder("gb2312"),如果你的计算机本地culture and region不是中文的话,default没用的,必须使用gb2312。不用循环每一个byte的,只要用 fangxinggood 那样的方法就可以了,
    using System.Text;// Encoded Hex bytes
    byte[] bDate = new byte[] { 0x09, 0xB1, 0x4F, 0x50, 0x44, 0x4F, 0x4F, 0x52, 0x00, 0xB8 };
    // Get the decoded string
    string value = Encoding.Default.GetString(byte[]);
      

  8.   

    UTF-8编码当然能保存汉字,网页基本上都是UTF-8编码的UTF-8   标准ASCII 1一个字节  西欧的一般是2字节  GJK(中日韩字符集)一般来说是 3字节
    GB2312(包括其他GB系列字符集) 标准ASCII 1字节  汉字两字节 。但是外国人看就是乱码,因为电脑上没装这个字符集
    UTF-16 都是2字节。
    (UTF-8 UTF-16 都能够转换为Unicode编码,所以外国人电脑看起来也不是乱码)楼主的数据只有英文,用 UTF-8 GB2312 ASCII 来转换结果都是一样的。
    并且由于标识位的存在 0xB1 0xB8 0x2E  用Encoding类去转换,还会出现乱码
    还不如一个字节一个字节的处理
      

  9.   

    如果是为了保存需要,可以把他转换成Base64编码保存到数据库
      

  10.   


      string[] datas = new string[] { "0x09", "0xB1", "0x4F", "0x50", "0x44", "0x4F", "0x4F", "0x52", "0x00", "0xB8" };
     var arr=datas.Select(p=>byte.Parse(p)).ToArray();       
       var utf8Str= Encoding.UTF8.GetString(arr);
       var gb2312Str=Encoding.GetEncoding("gb2312").GetString(arr);
    //gb2312的可能性大因为它是2的倍数
      

  11.   


    请你装一下英文版的win7 在来说吧。我是亲自试验过的。