问题标签 [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.

0 投票
9 回答
124426 浏览

java - Java 是以小端还是大端读取整数?

我问是因为我正在将字节流从 C 进程发送到 Java。在 C 端,32 位整数的 LSB 是第一个字节,MSB 是第 4 个字节。

所以我的问题是:在 Java 端,当我们读取从 C 进程发送的字节时,Java 端的字节序是什么

一个后续问题:如果Java端的endian和发送的不一样,如何在它们之间进行转换?

0 投票
6 回答
303 浏览

c# - 如何将整数写入右侧低位的文本文件(Bigendian)

默认情况下,BinaryWriter 类将 int 值写入左侧的低位(例如,当在十六进制编辑器中查看结果文件时, (int)6 变为 06 00 00 00)。我需要右边的低位(例如00 00 00 06)。

我如何实现这一目标?

编辑:感谢 strager 为我提供了我所寻找的名称。我已经编辑了标题和标签,以便更容易找到。

0 投票
3 回答
3759 浏览

c++ - wchar_t 数据是否需要字节序转换?

在 C/C++ 中,如果一个多字节宽字符 (wchar_t) 值从大端系统传输到小端系统(或反之亦然),它会在另一端输出相同的值吗?还是需要交换字节?

0 投票
5 回答
652 浏览

language-agnostic - little-endian 系统使用哪些转换将数据转换为网络顺序?

将 little-endian 系统中的数据转换为网络字节顺序所需的底层转换是什么?对于 2 字节和 4 字节数据,有众所周知的函数(如 htons、ntohl 等)来封装更改,对于 1 字节数据的字符串(如果有的话)会发生什么?

此外,Wikipedia 暗示 little-endian 是 big-endian 的镜像,但如果这是真的,为什么我们需要对 2 字节和 4 字节数据进行特定处理?

文章“论圣战和和平恳求”似乎暗示有许多不同风格的 little-endian——这是一篇古老的文章——这仍然适用吗?像 Java 类文件开头那样的字节顺序标记是否仍然需要?

最后,网络字节顺序是否需要 4 字节对齐?

0 投票
8 回答
1927 浏览

endianness - 字节序理论和概念

这不是特定于任何编程语言的问题。假设您在大端机器上编写了一些文件,并且您知道这一点。如果两个单字节值是背靠背写入的,你怎么知道?Big-endian 颠倒了 16、32 和 64 位值的顺序,那么您怎么知道需要将其作为单个字节读取呢?

例如,您写入字节 0x11,然后写入字节 0x22。然后该文件包含 0x1122。如果您在小端机器上阅读它,则必须对其进行转换。那么你会把它读成 2211 还是 1122?你知道怎么做吗?

这有道理吗?我觉得我在这里错过了一些超级基本的东西。

0 投票
6 回答
8216 浏览

javascript - JavaScript 字节序编码?

对 SO 的回应让我想到,JavaScript 是否保证跨操作系统和浏览器的某种字节序编码?

或者换句话说,在 JavaScript 中整数“安全”的按位移位?

0 投票
2 回答
3158 浏览

c++ - boost asio and endian

I cant tell, does boost asio handle endian?

0 投票
6 回答
10938 浏览

c - C中具有大量字符的字节顺序

我正在用 C 语言进行一些套接字编程,并试图解决字节顺序问题。我的请求(发送)很好,但是当我收到数据时,我的字节都乱了。我从这样的事情开始:

在处理这个响应时,每个 16 位字的字节似乎都颠倒了(我使用的是 UDP)。我试图通过这样做来解决这个问题:

当我将数据视为短数据时,这可以正常工作,但是如果我再次将指针转换为 char,则字节会反转。我究竟做错了什么?

0 投票
9 回答
30565 浏览

c++ - 从 char* 数组中读取“整数”大小的字节。

我想从 数组中读取sizeof(int)字节。char*

a)如果需要检查字节顺序,我们需要担心什么情况?

b)考虑或不考虑字节顺序,您将如何读取前 4 个字节。

编辑:我读过的sizeof(int)字节需要与一个整数值进行比较。

解决这个问题的最佳方法是什么

0 投票
4 回答
1022 浏览

c# - 为什么在字节中反转位时会得到以下输出?

假设:

将 byte[] 从 Little Endian 转换为 Big Endian 意味着反转 byte[] 的每个字节中的位顺序。

假设这是正确的,我尝试了以下方法来理解这一点:

转换方法:

这个小应用程序的输出与我的预期不同:

由于某种原因,数据保持不变,除非使用 BitConverter 打印。

我不明白什么?

更新

新代码产生以下输出:

但正如我现在被告知的那样,我的方法无论如何都是不正确的,因为我应该反转字节而不是位?

我正在与之合作的这位硬件开发人员告诉我要反转位,因为他无法读取数据。

我使用它的上下文

将使用它的应用程序实际上不适用于数字。

我应该将比特流保存到文件中

1 = 白色,0 = 黑色。

它们代表 256x64 位图的像素。

字节 0 到字节 31 表示第一行像素,字节 32 到字节 63 表示第二行像素。

我有输出这些位的代码......但开发人员告诉我它们的顺序错误......他说字节很好,但位不是。

所以我很困惑:p