Tag: endianness

C#big-endian UCS-2

我目前正在开发的项目需要与我们没有建立的客户端系统进行交互,因此我们无法控制数据的发送方式。 问题是在C#中工作,它似乎对UCS-2没有任何支持,对big-endian的支持很少。 (据我所知) 我想知道的是,如果我在.net中查看过任何内容,或者其他人已经制作并发布了我们可以使用的内容。 如果不是,我将采用自定义方法对其进行编码/解码,如果可能的话。 但无论如何,谢谢你的时间。 编辑:BigEndianUnicode 确实正确解码字符串,问题是接收其他数据作为大端,到目前为止使用IPAddress.HostToNetworkOrder()如其他地方建议允许我解码一半的字符串(Merli?是出现的和它应该是Merlin33069) 我梳理短代码,看看是否错过了另一个长度变量 解决方案:在确定了bigendian变量是主要问题后,我回过头来查看详细信息,似乎字符串的长度是以字符数发送的,而不是字节数(在utf中它似乎是char是两个所有我需要做的就是加倍,然后就解决了。 感谢大家的帮助。

C# – Big Endian的二进制阅读器?

我正在尝试通过使用程序读取所有不同的信息来提高我对STFS文件格式的理解。 使用一个网站参考哪些偏移包含哪些信息,我写了一些有二进制阅读器的代码遍历文件并将值放在正确的变量中。 问题是所有数据都被支持为Big Endian,二进制读取器读取的所有内容都是Little Endian。 那么,解决这个问题的最佳方法是什么? 我可以创建一个二进制读取器的模拟类,它返回一个反向的字节数组吗? 有什么我可以在类实例中更改它将使它以大端读取,所以我不必重写所有内容? 任何帮助表示赞赏。 编辑:我尝试添加Encoding.BigEndianUnicode作为参数,但它仍然读取小端。

如何使用bitConverter.ToInt32方法从c#中获取big endian的小端数据?

我在c#中进行应用程序。在该应用程序中,我有包含hex值的字节数组。 在这里,我将数据作为一个大端,但我希望它作为一个小端。 这里我使用Bitconverter.toInt32方法将该值转换为整数。 但我的问题是,在转换值之前,我必须将该4字节数据从源字节数组复制到临时数组中,然后反转该临时字节数组。 我不能反转源数组,因为它也包含其他数据。 因为我的应用程序变得缓慢。 代码这里我有一个字节的源数组作为waveData []。它包含很多数据。 byte[] tempForTimestamp=new byte[4]; tempForTimestamp[0] = waveData[290]; tempForTimestamp[1] = waveData[289]; tempForTimestamp[2] = waveData[288]; tempForTimestamp[3] = waveData[287]; int number = BitConverter.ToInt32(tempForTimestamp, 0); 该转换还有其他方法吗?

BinaryWriter Endian问题

我正在使用BinaryWriter类将二进制文件写入磁盘。 当我调用Write方法时,传递一个unsigned short值,它以little-endian格式写入。 例如: bw.Write(0xA000); 将二进制文件中的值写为0x00 0xA0。 有没有办法让BInaryWriter使用Big Endian? 如果没有,是否可以创建一个新类,inheritanceBinaryWriter并重载Write函数以使其写入大端?