首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双字节的顺序能被安全地逆转吗?

双字节的顺序能被安全地逆转吗?
EN

Stack Overflow用户
提问于 2019-05-16 11:06:46
回答 1查看 240关注 0票数 1

Double在内存中使用8个字节表示。我相信这8个字节应该有两个组成部分,一个是整数部分,一个是分数部分(如果我在这个假设中错了,请纠正我)。我的机器有点终端(现在每台Macmini都是)。我希望将表示Double的这8个字节传输到一个文件中,该文件在BigEndian平台上应该是可读的(特别是JVM )。

对于普通整数来说,逆转字节顺序是安全的,因为它们没有组件,而且是原子的。

考虑到Double有两个组件,简单地反转字节顺序是安全的吗?如果不安全,如何将LittleEndian数据表示为BidEndian数据?

另外,我需要读取一个包含BigEndian数据的文件,并在我的LittleEndian机器上将其转换为Double。正好相反的情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 11:52:38

有一个bitPattern方法作为整数获取浮点值的位模式,还有一个用于反向转换的Double(bitPattern:)初始化器。从文件中:

比特模式与IEEE 754规范定义的二进制交换格式相匹配。

因此--假设JVM使用相同的IEEE 754二进制交换格式--以下内容是安全的:

代码语言:javascript
复制
let x = 12.34

// Double to binary interchange format (big endian):
let data = withUnsafeBytes(of: x.bitPattern.bigEndian) { Data($0) }

相反的方向:

代码语言:javascript
复制
// Binary interchange format (big endian) to Double:
let y = data.withUnsafeBytes { Double(bitPattern: UInt64(bigEndian: $0.load(as: UInt64.self))) }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56167127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档