coco069
coco069
2015-05-16 06:56
采纳率: 50%
浏览 8.9k

C# 对byte[]进行高低位转换

      从服务器端读取一个.dat文件,在客户端这边转换成一个byte[],现在要对这个byte[]进行高低位转换,转换后成为一个新的byte[],这该采用什么方法?
      举个例子就是本来服务器端的.dat文件里面本来是0x00004321432143210000,但我未转换的话读出来的是0x00002143214321430000,就是怎么把后面这个转换成前面那个?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • devmiao
    devmiao 2015-05-16 07:05
    已采纳

    很简单
    byte[] b = File.ReadAllBytes("1.dat");
    var query = b.Select((x, i) => new { x, i }).GroupBy(x => x.i / 2).SelectMany(x => new byte[] { x.Last().x, x.First().x });

    点赞 评论
  • KnightMobile

    图片说明

    点赞 评论
  • hjkl950217
    长空X 2015-05-21 13:25

    楼上的觉得好用点。。从第一个数组最后面开始遍历到新数组里机。。好像提供的有反转方法,直接转换了

    点赞 评论
  • liujie2715
    liujie2715 2017-06-10 09:37

    忍不住回答下
    假设有byte[]数组如下
    byte[] res = new byte[]{1,2,3,4,5,6,7,8,9,10};
    Array.Reverse(res);
    res结果为{10,9,8,7,6,5,4,3,2,1}
    ---------------------------------------------------------------分割线---------------------------------------------
    举个例子说明高地位转换
    假设有一个数为254,那么它的二进制数就为1111 1110,1111就是高位 1110就是低位。 转换后就为 1110 1111
    转换算法为 0xfe&0x0f< 0fe&0xf0>>4 取得高位
    两者相加就为0xef
    --------------------------------------------------------完毕--------------------------------------------------------------

    点赞 评论

相关推荐