BYTE[]数组里的是存的十进制,如何转换成十六进制?
例如byte[] aa = new byte[]{63,204,204,205}那么如何转换成byte[] aa = new byte[]{3F,CC,CC,CD}

解决方案 »

  1.   

    byte[] aa = new byte[] { 0x3F, 0xCC, 0xCC, 0xCD };
      

  2.   

                byte[] aa = new byte[] { 63, 204, 204, 205 };
                string[] result = new string[aa.Length];
                for (int i = 0; i < aa.Length; i++)
                {
                    result[i] = aa[i].ToString("X2");
                }
      

  3.   


      三楼的你那个是转换成STRING 数组了,我要的是能转换成BYTE数组
      

  4.   


    我为什么这么问呢?因为i我要把一个BYTE数组里的数据,四个字节一换,换成浮点数的,所以我必须先把BYTE数组中的十进制数先转换成十六进制
      

  5.   

    本帖最后由 caozhy 于 2012-02-09 10:44:18 编辑
      

  6.   

    我给你个数据,byte[] aa = new byte[]{00,01,02,03,3F,CC,CC,CD}
    计算下 3F,CC,CC,CD的浮点数是多少?
      

  7.   

    这个我写通信程序的时候遇见过,手头没有环境,不知道写的对不对。好像可以直接(byte)十进制 来强制转换的。不过你如果想判断大小的话,十进制和16进制是一样的,只有“显示”的时候才需要变成16进制,那可以用楼上的方法。希望你懂我的意思。
      

  8.   

    本帖最后由 caozhy 于 2012-02-09 10:54:25 编辑
      

  9.   


    不好意思啊,麻烦你解释下 其中的 x,y,z,i,v分别什么意思?谢谢啊/
      

  10.   

    引用sys
    string s = aa.JoinText(", ", "0x{0:X2}");
      

  11.   

    给Lambda表达式提供临时变量。因为都在一个作用域里面,所以用不同的字母区分。
    首先对原始数据作投影,变成 index(i) + value(v)的形式。
    然后按照index分组,每相邻4个变成一组。
    然后不要index了,只要value,转换成字节数组
    再用BitConverter.ToSingle()投影成float
    最后转化成数组。建议你看下LINQ。以及MSDN的介绍。
      

  12.   

    这就好比写循环,作为循环变量,一般就用i,如果是两层循环,就是i,j,……没有特别的意义。
      

  13.   

    你根本就不用管Byte中存的形式,
    举个简单的例子一个Int占4字节,就是4个Byte
    你可以先用位运算">>"和"<<"把Byte数组拼接成你需要的数具体可以查下MSDN中的位运算
      

  14.   

    不知道这样转有什么意义,直接循环Byte数组,然后转十六进制不就行了
      

  15.   

    http://www.cnblogs.com/Mainz/archive/2008/04/09/String_Byte_Array_Convert_CSharp.html
      

  16.   

    错误 1 与“System.BitConverter.ToSingle(byte[], int)”最匹配的重载方法具有一些无效参数 D:\C#_Program\test\test\Program.cs
    错误 2 参数“1”: 无法从“TResult[]”转换为“byte[]” D:\C#_Program\test\test\Program.cs
    错误 3 “AnonymousType#1”不包含“Select”的定义,并且找不到可接受类型为“AnonymousType#1”的第一个参数的扩展方法“Select”(是否缺少 using 指令或程序集引用?) D:\C#_Program\test\test\Program.cs
      

  17.   

    Byte 区分 16 进制和10 进制吗?
      

  18.   

    这真是个蛋疼的问题,byte里面存什么,不就是byte而已,你所看到的10进制是因为你显示的是十进制
      

  19.   

    修正下:            float[] result = (from x in fourbytes.Select((v, i) => new { v, i })
                                  group x by x.i / 4 into g
                                  select BitConverter.ToSingle(g.Select(y => y.v).ToArray(), 0)).ToArray();