字节序,是指字节在内存中的存储顺序。其又分为大端字节(Big-Endian)序和小端字节序(Little-Endian)。

  以下摘自百度百科:

  a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

  b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

  什么意思呢?

  我们有一个int32的值:16909060,它的二进制表示方式是:0000 0001,0000 0010,0000 0011,0000 0100 (为了方便观看,我加了','号)

  那么,在内存中我们需要4个字节来保存这个整型数值。假设需要的内存地址为:0x00000001,0x00000002,0x00000003,0x00000004

  对于小端字节序,它的存放顺序为:

0x00000001 0x00000002 0x00000003 0x00000004
0000 0100 0000 0011 0000 0010 0000 0001

  对于大端字节序,它的存放顺序为:

0x00000001 0x00000002 0x00000003 0x00000004
0000 0001 0000 0010 0000 0011 0000 1000

  那么,在.net中是采用哪种字节序呢?

  先下结论:.net在内存中采用的是Little-Endian。

  测试原理:利用 Buffer.BlockCopy 方法将一个int32位的值复制到int16值中。 Buffer.BlockCopy  方法将指定的count个数组从src复制到dst,并能指定开始复制的偏移位置。BlockCopy 方法使用内存的偏移量访问 src 参数数组中的字节,而不是使用索引或数组上下限等编程构造。注意,是内存的偏移量,即该方法是从内存中一个一个字节的复制值,而不是直接复制数值结构

  以下是源代码:

           var sours = new int[] {  };
var dest = new short[];
var sp = ; //源序列偏移地址
var dp = ; //目标位置偏移地址
var count = ; //一次拷贝字节数 Buffer.BlockCopy(sours, sp, dest, dp, count);
foreach (var i in dest)
{
Console.WriteLine(i);
}

  结果输出:175.

  代码里一次复制2个字节,整好是一个int16所需要的字节大小。而源数组的起始偏移量是0.如果我们把sp的值改成2,即偏移2个字节,最后的输出就变成了0.这是因为175的高位字节是0000 0000,0000 0000,他存放在内存的高地址中。

判断.net中在windows系统下的字节序的更多相关文章

  1. windows系统下npm升级的正确姿势以及原理

    本文来自网易云社区 作者:陈观喜 网上关于npm升级很多方法多种多样,但是在windows系统下不是每种方法都会正确升级.其中在windows系统下主要的升级方法有以下三种: 首先最暴力的方法删掉no ...

  2. 如何用python在Windows系统下,生成UNIX格式文件

    平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:“文件中凡是遇到换行,换行符必须是UNIX下的LF,而不是 ...

  3. 在Windows系统下用命令把应用程序添加到系统服务

    在Windows系统下用命令把应用程序添加到系统服务,使用SC命令. 加入服务格式如下:sc create ServiceName binPath= 程序路径 start= auto(等号后面的空格是 ...

  4. windows系统下简单nodej.s环境配置 安装

    国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网 htt ...

  5. windows系统下安装MySQL

    可以运行在本地windows版本的MySQL数据库程 序自从3.21版以后已经可以从MySQL AB公司获得,而且 MYSQL每日的下载百分比非常大.这部分描述在windows上安装MySQL的过程. ...

  6. Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式

    在上一篇文章里面 ( Windows系统下Memcached缓存系列一:Couchbase(服务器端)和CouchbaseClient(c#客户端)的安装教程 ),我们介绍了服务器端的安装和客户端的安 ...

  7. Mac和Windows系统下Mysql数据库的导入导出

    最近在构建数据库的过程中,需要将Mac os系统下的Mysql数据库导出成.sql文件,然后导入到windows系统下的Mysql中.经过学习总结出的步骤如下: 一.Mac os导出Mysql数据库 ...

  8. Windows系统下Nginx的安装与配置

    Nginx是lgor Sysoev在2004年的时候为俄罗斯访问量第二大的rambler.ru站点设计开发的,发布至今,凭借开源的力量,已经接近成熟与完善.其功能丰富,可作为HTTP服务器,也可作为反 ...

  9. Windows系统下的TCP参数优化(注册表\TCPIP\Parameters)

    转自:https://blog.csdn.net/libaineu2004/article/details/49054261 Windows系统下的TCP参数优化   TCP连接的状态与关闭方式及其对 ...

随机推荐

  1. php动态更改post_max_size, upload_max_filesize等值

    在配置文件里 有些PHP 配置选项可以用int_set() 函数 直接在 项目里修改.但是有些值确不行.例如和上传文件有关的post_max_size和upload_max_filesize int_ ...

  2. webstorm+react+webpack-demo

    序言:通过这个小例子你也许.大概.可能会掌握以下几点 1.webstorm如何使用命令行 2.如何使用webpack的loaders把json格式的文件转化为javascript文件 3.如何使用不同 ...

  3. inline-block 空白间距问题

    一. 问题 元素是inline-block属性时,会有空白间隙 二. 解决方案 1. html方式 1)将元素之间的空隙去除 <div class="space"> & ...

  4. Linux vi/vim(转载)

    Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...

  5. CSS3选择器——基本选择器

    CSS是一种用于屏幕上渲染html,xml等一种语言,CSS主要是在相应的元素中应用样式,来渲染相对应用的元素,那么这样我们选择相应的元素就很重要了,如何选择对应的元素,此时就需要我们所说的选择器.选 ...

  6. iOS中的round/ceil/floorf函数略解

    extern float ceilf(float); extern double ceil(double); extern long double ceill(long double); extern ...

  7. TeamCity实战(1):准备工作

    环境: Windows Server 2008 R2 SP1(不会再有SP2,参考这里:http://www.techspot.com/news/50599-microsoft-wont-releas ...

  8. fillStyle径向渐变

    <!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas</ ...

  9. Maven基础配置—本地Maven配置

    1.下载客户端 通过http://maven.apache.org/download.cgi#下载Maven本地客户端. 我下载的是apache-maven-3.2.5-bin.zip,在D盘解压. ...

  10. SQL SERVER出现大量一致性错误的解决方法

    如果DBCC CHECKDB发现了比较少的一致性错误,可以使用   DBCC UPDATEUSAGE(DatabaseName,"dbo.ObjectName"); 语句逐个针对表 ...