问题标签 [endianness]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 是以小端还是大端读取整数?
我问是因为我正在将字节流从 C 进程发送到 Java。在 C 端,32 位整数的 LSB 是第一个字节,MSB 是第 4 个字节。
所以我的问题是:在 Java 端,当我们读取从 C 进程发送的字节时,Java 端的字节序是什么?
一个后续问题:如果Java端的endian和发送的不一样,如何在它们之间进行转换?
c# - 如何将整数写入右侧低位的文本文件(Bigendian)
默认情况下,BinaryWriter 类将 int 值写入左侧的低位(例如,当在十六进制编辑器中查看结果文件时, (int)6 变为 06 00 00 00)。我需要右边的低位(例如00 00 00 06)。
我如何实现这一目标?
编辑:感谢 strager 为我提供了我所寻找的名称。我已经编辑了标题和标签,以便更容易找到。
c++ - wchar_t 数据是否需要字节序转换?
在 C/C++ 中,如果一个多字节宽字符 (wchar_t) 值从大端系统传输到小端系统(或反之亦然),它会在另一端输出相同的值吗?还是需要交换字节?
language-agnostic - little-endian 系统使用哪些转换将数据转换为网络顺序?
将 little-endian 系统中的数据转换为网络字节顺序所需的底层转换是什么?对于 2 字节和 4 字节数据,有众所周知的函数(如 htons、ntohl 等)来封装更改,对于 1 字节数据的字符串(如果有的话)会发生什么?
此外,Wikipedia 暗示 little-endian 是 big-endian 的镜像,但如果这是真的,为什么我们需要对 2 字节和 4 字节数据进行特定处理?
文章“论圣战和和平恳求”似乎暗示有许多不同风格的 little-endian——这是一篇古老的文章——这仍然适用吗?像 Java 类文件开头那样的字节顺序标记是否仍然需要?
最后,网络字节顺序是否需要 4 字节对齐?
endianness - 字节序理论和概念
这不是特定于任何编程语言的问题。假设您在大端机器上编写了一些文件,并且您知道这一点。如果两个单字节值是背靠背写入的,你怎么知道?Big-endian 颠倒了 16、32 和 64 位值的顺序,那么您怎么知道需要将其作为单个字节读取呢?
例如,您写入字节 0x11,然后写入字节 0x22。然后该文件包含 0x1122。如果您在小端机器上阅读它,则必须对其进行转换。那么你会把它读成 2211 还是 1122?你知道怎么做吗?
这有道理吗?我觉得我在这里错过了一些超级基本的东西。
javascript - JavaScript 字节序编码?
对 SO 的回应让我想到,JavaScript 是否保证跨操作系统和浏览器的某种字节序编码?
或者换句话说,在 JavaScript 中整数“安全”的按位移位?
c++ - boost asio and endian
I cant tell, does boost asio handle endian?
c - C中具有大量字符的字节顺序
我正在用 C 语言进行一些套接字编程,并试图解决字节顺序问题。我的请求(发送)很好,但是当我收到数据时,我的字节都乱了。我从这样的事情开始:
在处理这个响应时,每个 16 位字的字节似乎都颠倒了(我使用的是 UDP)。我试图通过这样做来解决这个问题:
当我将数据视为短数据时,这可以正常工作,但是如果我再次将指针转换为 char,则字节会反转。我究竟做错了什么?
c++ - 从 char* 数组中读取“整数”大小的字节。
我想从 数组中读取sizeof(int)
字节。char*
a)如果需要检查字节顺序,我们需要担心什么情况?
b)考虑或不考虑字节顺序,您将如何读取前 4 个字节。
编辑:我读过的sizeof(int)
字节需要与一个整数值进行比较。
解决这个问题的最佳方法是什么
c# - 为什么在字节中反转位时会得到以下输出?
假设:
将 byte[] 从 Little Endian 转换为 Big Endian 意味着反转 byte[] 的每个字节中的位顺序。
假设这是正确的,我尝试了以下方法来理解这一点:
转换方法:
这个小应用程序的输出与我的预期不同:
由于某种原因,数据保持不变,除非使用 BitConverter 打印。
我不明白什么?
更新
新代码产生以下输出:
但正如我现在被告知的那样,我的方法无论如何都是不正确的,因为我应该反转字节而不是位?
我正在与之合作的这位硬件开发人员告诉我要反转位,因为他无法读取数据。
我使用它的上下文
将使用它的应用程序实际上不适用于数字。
我应该将比特流保存到文件中
1 = 白色,0 = 黑色。
它们代表 256x64 位图的像素。
字节 0 到字节 31 表示第一行像素,字节 32 到字节 63 表示第二行像素。
我有输出这些位的代码......但开发人员告诉我它们的顺序错误......他说字节很好,但位不是。
所以我很困惑:p