有个数组,里面存的是16进制的内容 现在想转成 16进制格式的字符串格式 比如数组大小现在有4个字节,分别是 :0x11,0x02,0x03,0xff 想要的字符串格式是:"110203ff"
 
 要怎么来实现呢比较好呢?
 
 发现在转换时,,不足两位的16进制,转为字符串时,会省略高位的“0”
 现在处理是,先判断字符长度,不足两位,高位补“0”,感觉不是很好呀
 
 有更好的办法么?
 谢谢

解决方案 »

  1.   


                int[] arr = new int[] { 0x11, 0x02, 0x03, 0xff };
                string s = "";
                foreach (int i in arr)
                {
                    s += Convert.ToString(i, 16).PadLeft(2,'0');
                }
                MessageBox.Show(s);
      

  2.   

    试了一下,可以的 可能没描述清楚,, 数组是个固定的大小,比如 1024个大小 但是有可能都填不满数组的,,有是4个字节,有时,可能来100个字节
     
     按你上面的方法,,把数组内的东西全都弄出来了
     
     比如 有1024个字节大小 字符串成了:"110203ff0000000000000000........."
     而实际上只要 110203ff 就OK了
     
      

  3.   


    byte[] arr = new byte[1024];
    arr[0] = 0x11;
    arr[1] = 0x02;
    arr[2] = 0x03;
    arr[3] = 0xff;string s = "";
    for (int i = 0; i < arr.Length && arr[i] > 0; i++)
    {
    s += arr[i].ToString("x2");
    }
    或者
    string s = string.Join("", Array.ConvertAll(Array.FindAll(arr, o => o > 0), o => o.ToString("x2")));