问题标签 [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.
casting - 将两个字节的数组转换为单个短字节的字节序
问题:我无法理解IBM 文章摘录中的数字 256 (2^8) :
另一方面,如果是大端系统,则高字节为 1,x 的值为 256。
假设数组中的每个元素消耗 4 位,那么处理器应该以某种方式读取:1000 0000。如果它是大端,则为 0001 0000,因为字节序不影响字节内的位。[2] 与文章中的256矛盾!?
问题:为什么数字是 256_dec (=1000 0000_bin) 而不是 32_dec (=0001 0000_bin)?
[2] 字节序问题不会影响具有单字节的序列,因为从存储的角度来看,“字节”被认为是一个原子单元。
endianness - “IBM PC”字节顺序的字节序?
我查看了关于字节序的维基百科文章,它没有提到任何关于这种字节顺序的内容(这是 Photoshop 在打开 RAW 文件时问我的问题)。它是哪一个?
c++ - 将 UINT16 值转换为 UINT8 数组[2]
这个问题基本上是我的另一个问题的后半部分
如何将 UINT16 值转换为没有循环的 UINT8 * 数组并避免字节序问题。
基本上我想做这样的事情:
这样做的最终结果是将值存储到 UINT8 数组中,同时避免字节序转换。
当我简单地使用 UINT16 值进行 memcpy 时,它会转换为破坏输出的小端序。我试图避免使用字节序转换函数,但我想我可能只是不走运。
c - 这个 C 函数在运行时查找机器的字节序有什么问题?
这是我今天接受采访时提出的。
我的面试官坚持认为c
andl
不能保证从同一个地址开始,因此应该将 union 更改为 saychar c[sizeof(long)]
并且返回值应该更改为u.c[0] == 1
.
工会成员可能不会从同一个地址开始,这是否正确?
x86 - DEC VAX 与 IA-32 的字节顺序
问题描述如下。如果您不感兴趣,可以跳到最后一行。
我正在使用具有以下描述的数据文件:
人头的 109 层 MRI 数据集。完整的切片连续存储为 256 x 256 数组。像素由 2 个连续的字节组成,构成一个二进制整数。数据取自 Siemens Magnetom,由新泽西州 Iselin 的 Siemens Medical Systems, Inc. 提供。
进而:
数据集写在 Digital Equipment Corporation (DEC) VAX 计算机上。每个文件仅包含像素,按行主要顺序存储,每个像素有 2 个字节的整数。要在具有正常字节顺序的机器上使用图像(DEC 使用反向字节顺序),您应该交换备用字节,例如在 UNIX 中使用“dd”命令。对 3dknee 数据集执行此操作的示例命令是:
我不知道真正的值是什么,所以我不能仅仅通过查看字节顺序是否正确来判断。
底线
DEC VAX 的字节顺序与 IA-32 中的相同,还是相反?
python - 确定字节顺序的最 Pythonic 方式是什么?
我正在尝试找到确定我的代码运行的机器是大端还是小端的最佳方法。我有一个可行的解决方案(虽然我没有在大端机器上测试过),但它似乎有点笨拙:
这只是将“本机”两字节包与小端包进行比较。有没有更漂亮的方法?
java - 小/大端
如何确定操作系统在 Java 中是否是小/大端?
c# - ASM 中小端到大端的快速转换
我在 C# 中有一个 uint-types 数组,在检查程序是否在 little-endian 机器上运行后,我想将数据转换为 big-endian 类型。因为数据量可能会变得非常大但总是均匀的,所以我在考虑将两种 uint 类型视为 ulong 类型,以获得更好的性能并在 ASM 中对其进行编程,所以我正在寻找一个非常快(如果可能的话最快) 汇编器算法将小端转换为大端。
java - (java) 写入文件 little endian
我正在尝试编写 TIFF IFD,并且我正在寻找一种简单的方法来执行以下操作(这段代码显然是错误的,但它可以理解我想要的内容):
会写:
0c00 0301 0300 0100 0000 0100 0000
我知道如何让写入方法占用正确的字节数(writeInt、writeChar 等),但我不知道如何让它以小端序写入。有人知道吗?