问题标签 [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 投票
7 回答
12677 浏览

c++ - 如何将值从主机字节顺序转换为小端?

我需要将主机字节顺序的短值转换为小端。如果目标是大端,我可以使用 htons() 函数,但可惜 - 它不是。

我想我可以这样做:

但这可能会导致字节被交换两次,从而使结果正确,但给我带来了性能损失,这在我的情况下是不行的。

0 投票
3 回答
6726 浏览

objective-c - 在 Objective-C 中交换字节顺序?

我需要交换一些值的字节顺序,只是想知道在 Objective-C 中是否有任何可用的东西,目前我正在用下面的 CStyle 函数交换字节(显然我可以重用)我只是想检查没有什么具体的我失踪?

EDIT_001

感谢这里的指针,我对整数进行了排序,交换浮点数的最简单方法是什么?

(以上代码已更新)

加里

0 投票
4 回答
9710 浏览

c - 什么是在 C 中转换字符串字节顺序的可移植方式

我正在尝试编写将与任何可以建立套接字连接的标准客户端(例如 telnet 客户端)通信的服务器

它最初是一个回显服务器,当然不需要担心网络字节顺序。

我熟悉ntohs、ntohl、htons、htonl函数。如果我要传输 16 位或 32 位整数,或者要发送的字符串中的字符是 2 或 4 个字节的倍数,这些本身就很棒。

我想创建一个对字符串进行操作的函数,例如:

或类似的东西。上面的事情假设字大小是 32 位。我们不能确定发送机器上的字大小不是 16 位还是 64 位,对吗?

对于客户端程序,例如 telnet,它们必须在发送前使用 hton*,在接收数据后使用 ntoh*,对吗?

编辑:对于那些因为 1-char 是字节序无关紧要的字节的人:

运行这段代码。我的输出如下:

那些使用 powerPC 芯片组的人应该得到“1 2 3 4”,但我们这些使用 intel 芯片组的人应该看到我上面得到的大部分内容。

0 投票
3 回答
227 浏览

language-agnostic - 反转文件中的每个字符

我在这里有点麻烦。

谁能帮我实现一个反转每个字节的解决方案,所以 0xAB 变成 0xBA 但不是“abcd”变成“dcba”。我需要它,所以 AB CD EF 变成 BA DC FE。

最好在 C 或 C++ 中,但它并不重要,只要它可以运行。

到目前为止,我已经在 PureBasic 中实现了一个甚至不起作用的 UBER CRAPPY 解决方案(是的,我知道转换为字符串并返回二进制是一个糟糕的解决方案)。

谢谢阅读。

0 投票
7 回答
19780 浏览

.net - 在 .NET 中反转字节顺序

在下面的代码中,为什么 X 和 Y 的值与我直观地认为的不同?

如果将字节 0-7 写入缓冲区,那么生成的 long 不应该具有相同顺序的字节吗?这就像它以相反的顺序读取长值。

(我不知道该用什么来标记这个问题,除了 .NET。)


是假的。如果我的电脑是大端的,为什么会这样?

  • 这是一台 Windows 7 64 位机器
  • Intel Core2 Quad Q9400 2.66 GHz LGA 775 95W 四核处理器型号 BX80580Q9400
  • SUPERMICRO MBD-C2SBX+-O LGA 775 Intel X48 ATX Intel主板

此代码的结果(响应 Jason 的评论):

结果:

0 投票
2 回答
2067 浏览

perl - 如何使用 32 位 Perl 解冻使用 64 位 Storable 冻结的内容?

我正在尝试解冻在 64 位 Solaris(生产)机器上使用 Storable 冻结的数据库 BLOB。当我尝试在 32 位 Windows(开发)PC 上解冻时,我收到“字节顺序不兼容错误”。

确切的错误是:

SearchSendQueue.pm 的第 124 行:

有人知道我如何在 32 位机器上解冻这个对象吗?

注意:该对象有效并且在 64 位生产机器上工作。我已经尝试过“$Storable::interwork_56_64bit = 1;” 正如其他论坛所建议的那样。

0 投票
8 回答
3370 浏览

c++ - 有什么方法可以用小端程序读取大端数据?

一个外部小组为我提供了在 Big Endian 机器上编写的文件,他们还为文件格式提供了 C++ 解析器。

我只能在小端机器上运行解析器 - 有没有办法使用他们的解析器读取文件而不在每次读取后添加 swapbytes() 调用?

0 投票
2 回答
1796 浏览

java - 请验证:此转换器将字节数组读取为 Big-Endian?

我正在将一些东西从 C# 移植到 Java,我需要一个可以将字节转换为原语的类,就像 .NET 中的 BitConverter 一样。

正如我刚刚在此处发布的那样,我注意到我的计算机使用 Little-Endian (Intel) 并且 BitConverter 按预期工作:

b2short == 256 正如预期的那样。

好吧,我需要一个 JAVA 中的“BitConverter”并找到了这段代码。但是,当我在 JAVA 中尝试它时,在我看来,这些方法将字节数组解释为 Big-Endian。JAVA代码:

在这种情况下,b2short == 1 在我看来就像 Big-Endian。

此网页上的代码是否将字节数组解释为 Big-Endian?

如果是这样,是否有一种简单的方法可以使它成为 Little-Endian?

0 投票
4 回答
4928 浏览

c - 逐字节打印 4 字节整数时的意外行为

我有这个将 32 位整数转换为 ip 地址的示例代码。

此代码为 input 提供了不正确的输出2249459722。但是当我更换

过输出结果是正确的。

PS:我知道inet_ntopand inet_pton
除了提出建议之外,我还期待其他答案。

0 投票
2 回答
1513 浏览

ruby - 小端位掩码

我需要使用 Ruby 将整数数组转换为小端位掩码。任何链接或提示将不胜感激。

该示例说 [2,7,9,11] => "4205"

这不起作用,但我在正确的轨道上吗?