问题标签 [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.
c++ - 如何将值从主机字节顺序转换为小端?
我需要将主机字节顺序的短值转换为小端。如果目标是大端,我可以使用 htons() 函数,但可惜 - 它不是。
我想我可以这样做:
但这可能会导致字节被交换两次,从而使结果正确,但给我带来了性能损失,这在我的情况下是不行的。
objective-c - 在 Objective-C 中交换字节顺序?
我需要交换一些值的字节顺序,只是想知道在 Objective-C 中是否有任何可用的东西,目前我正在用下面的 CStyle 函数交换字节(显然我可以重用)我只是想检查没有什么具体的我失踪?
EDIT_001
感谢这里的指针,我对整数进行了排序,交换浮点数的最简单方法是什么?
(以上代码已更新)
加里
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 芯片组的人应该看到我上面得到的大部分内容。
language-agnostic - 反转文件中的每个字符
我在这里有点麻烦。
谁能帮我实现一个反转每个字节的解决方案,所以 0xAB 变成 0xBA 但不是“abcd”变成“dcba”。我需要它,所以 AB CD EF 变成 BA DC FE。
最好在 C 或 C++ 中,但它并不重要,只要它可以运行。
到目前为止,我已经在 PureBasic 中实现了一个甚至不起作用的 UBER CRAPPY 解决方案(是的,我知道转换为字符串并返回二进制是一个糟糕的解决方案)。
谢谢阅读。
.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 的评论):
结果:
perl - 如何使用 32 位 Perl 解冻使用 64 位 Storable 冻结的内容?
我正在尝试解冻在 64 位 Solaris(生产)机器上使用 Storable 冻结的数据库 BLOB。当我尝试在 32 位 Windows(开发)PC 上解冻时,我收到“字节顺序不兼容错误”。
确切的错误是:
SearchSendQueue.pm 的第 124 行:
有人知道我如何在 32 位机器上解冻这个对象吗?
注意:该对象有效并且在 64 位生产机器上工作。我已经尝试过“$Storable::interwork_56_64bit = 1;” 正如其他论坛所建议的那样。
c++ - 有什么方法可以用小端程序读取大端数据?
一个外部小组为我提供了在 Big Endian 机器上编写的文件,他们还为文件格式提供了 C++ 解析器。
我只能在小端机器上运行解析器 - 有没有办法使用他们的解析器读取文件而不在每次读取后添加 swapbytes() 调用?
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?
c - 逐字节打印 4 字节整数时的意外行为
我有这个将 32 位整数转换为 ip 地址的示例代码。
此代码为 input 提供了不正确的输出2249459722
。但是当我更换
PS:我知道inet_ntop
and inet_pton
。
除了提出建议之外,我还期待其他答案。
ruby - 小端位掩码
我需要使用 Ruby 将整数数组转换为小端位掩码。任何链接或提示将不胜感激。
该示例说 [2,7,9,11] => "4205"
这不起作用,但我在正确的轨道上吗?