草庐IT

Endianness

全部标签

c# - 在 C# 中用 16 位字交换字节序的更快方法

必须有一种更快更好的方法来交换16位字的字节然后这个。:publicstaticvoidSwap(byte[]data){for(inti=0;i有没有人有想法? 最佳答案 在我尝试申请Uberhacker奖时,我提交了以下内容。对于我的测试,我使用了一个8,192字节的Source数组并调用了SwapX2100,000次:publicstaticunsafevoidSwapX2(Byte[]source){fixed(Byte*pSource=&source[0]){Byte*bp=pSource;Byte*bp_stop=bp+

c# - BinaryWriter Endian 问题

我正在使用BinaryWriter类将二进制文件写入磁盘。当我调用Write方法并传递一个无符号短值时,它以小端格式写入。例如:bw.Write(0xA000);将二进制文件中的值写入0x000xA0。有没有办法让BInaryWriter使用BigEndian?如果不行,是否可以新建一个类,继承BinaryWriter,重载Write函数,让它写bigendian? 最佳答案 您可以在MiscUtil中使用我的EndianBinaryWriter.这使您可以指定所需的字节顺序。还有EndianBinaryReader和EndianB

c# - IPAddress.GetAddressBytes() 方法 - 什么字节顺序?

IPAddress类的GetAddressBytes()方法返回的4字节数组的字节顺序是什么?MoreontheGetAddressBytesmethod.是大端还是小端?我需要将一些IP地址放入邮件正文中,所以这对我来说很重要。 最佳答案 网络字节顺序(=大端)。见:http://en.wikipedia.org/wiki/Endianness#Endianness_in_networkinghttp://www.gnu.org/s/libc/manual/html_node/Byte-Order.html

c# - C# Endian 敏感吗?

C#是否对Endian敏感,例如,是否会编写如下代码:inta=1234567;shortb=*(short*)&i;始终为b分配相同的值。如果是这样,它的值(value)是多少?如果没有,如果代码中有指针,有什么好的方法来处理字节顺序? 最佳答案 C#没有定义字节顺序。实际上,是的,它可能永远是小端(IIRC甚至在IA64上,但我没有检查过),但如果字节序很重要,你应该理想地检查BitConverter.IsLittleEndian-或者只使用位-移位等而不是直接内存访问。引用protobuf-net中的几行(尚未提交的构建):W

C# Big-endian ulong 来自 4 个字节

我试图在C#中将4字节数组转换为ulong。我目前正在使用此代码:atomSize=BitConverter.ToUInt32(buffer,0);byte[4]包含这个:00032但是,字节是大端字节序。有没有一种简单的方法可以将这个Big-Endianulong转换为Little-Endianulong? 最佳答案 我相信JonSkeet的MiscUtil中的EndianBitConverter图书馆(nugetlink)可以做你想做的事。您还可以使用移位操作交换位:uintswapEndianness(uintx){retur

c# - C# 中的大型标志枚举

大家好,有一个简短的问题,我似乎找不到任何关于......我正在做一个需要带有大量标志(最多40个)的标志枚举的项目,我真的不想为每个枚举值输入确切的掩码:publicenumMyEnumeration:ulong{Flag1=1,Flag2=2,Flag3=4,Flag4=8,Flag5=16,//...Flag16=65536,Flag17=65536*2,Flag18=65536*4,Flag19=65536*8,//...Flag32=65536*65536,Flag33=65536*65536*2//rightabouthereIstarttogetreallypissedo

JavaScript Endian 编码?

AresponseonSO让我思考,JavaScript是否保证跨操作系统和浏览器的特定字节序编码?或者换句话说,整数的移位在JavaScript中“安全”吗? 最佳答案 移位是安全的,但您的问题是有缺陷的,因为字节顺序无论如何都不会影响移位操作。在所有语言的大端和小端系统上左移都是一样的。(右移可能不同,但这只是由于符号位的解释,而不是任何位的相对位置。)只有当您可以选择将某个内存块解释为字节或更大的整数值时,字节序才会发挥作用。通常,Javascript不会为您提供该选项,因为您无法访问任意内存块,尤其是变量占用的内存块。Typ

javascript - 如何在 javascript 中交换变量的字节顺序(字节顺序)

我正在接收和发送两个小端数字的十进制表示。我愿意:将一个变量左移8位或他们移动可变位数创建2个8位数字,分别代表16位数字的前半部分和后半部分。javascript(根据https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators)在移动时使用大端表示...endianness对我来说有点陌生(我只有90%确定我列出的步骤是我想要的。)所以交换有点令人眼花缭乱。请帮忙!我真的只需要知道如何有效地交换订单。(我只能想到在toString()返回值上使用for循环)

PHP 以大端字节顺序打包/解包 float

如何使用php以大端字节顺序打包/解包float?我通过解包功能走到了这一步,但我不确定这是否可行。functionunpackFloat($float){$n=unpack('Nn');$n=$n['n'];$sign=($n>>31);$exponent=($n>>23)&0xFF;$fraction=$n&0x7FFFFF;} 最佳答案 考虑了一段时间后,我找到了一个非常简单的解决方案,即使用与pack('f')使用的字节顺序相反的字节顺序。解压unpack('fdat',strrev(substr($data,0,4)));

php - 这种字节顺序转换是否正确?

我正在阅读一个库(github.com/adduc/phpmodbus)并且有这个函数可以将整数转换为小端字节序或大端字节串:privatestaticfunctionendianness($value,$endianness=0){if($endianness==0)returnself::iecBYTE(($value>>8)&0x000000FF).self::iecBYTE(($value&0x000000FF)).self::iecBYTE(($value>>24)&0x000000FF).self::iecBYTE(($value>>16)&0x000000FF);else