注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

关于BitConverter的使用说明  

2016-01-15 21:15:59|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在使用BitConverter的时候,GetBytes得到的字节顺序,受计算机字节顺序的影响,可能是Little-Endian的,也可能是Big-Endian的,测试如下:
using System;
 
namespace BinaryRepresent
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(BinaryString(123456789));
            Console.WriteLine(BinaryString2(123456789));
 
        }
 
        static string BinaryString(int a)
        {
            string s = Convert.ToString(a, 2);
            if (s.Length < 32)
                s = s.PadLeft(32, '0');
            string ret = string.Empty;
            for (int i = 0; i < 3; i++)
            {
                ret += s.Substring(i * 8, 8);
                ret += "-";
            }
            ret += s.Substring(3 * 8, 8);
            return ret;
        }
 
        static string BinaryString2(int a)
        {
             
            byte[] bytes = BitConverter.GetBytes(a);
            string ret=string.Empty;
            if (BitConverter.IsLittleEndian)
            {
                for (int i = bytes.Length - 1; i >0; i--)
                {
                    ret += Byte2String(bytes[i]);
                    ret += "-";
                }
                ret += Byte2String(bytes[0]);
            }
            else
            {
                for (int i = 0; i < bytes.Length - 1; i++)
                {
                    ret += Byte2String(bytes[i]);
                    ret += "-";
                }
                ret += Byte2String(bytes[bytes.Length - 1]);
            }
             
            return ret;
        }
 
        static string Byte2String(byte b)
        {
            char[] arr = new char[8];
 
            for (int i = 0; i < 8; i++)
            {
                if (((1 << (7 - i)) & b) == 0)
                    arr[i] = '0';
                else
                    arr[i] = '1';
            }
            return new string(arr);
        }
    }
}

两个函数的输出结果是一致的,大部分的计算机都是Little-Endian的,运行结果为:
关于BitConverter的使用说明 - Lemniscate - 信息,灵感,创新
  如果不做判断,两者输出的字节顺序刚好是逆序的……
  评论这张
 
阅读(203)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016