【发布时间】:2015-10-24 17:43:00
【问题描述】:
如何在 Swift 中将字节数组转换为双精度值?
(这是一个 NSInputStream 扩展)
我的 sn-p 附在下面,但它没有返回正确的双精度值:
func readDouble() -> Double
{
var readBuffer = Array<UInt8>(count:sizeof(Double), repeatedValue: 0)
let numberOfBytesRead = self.read(&readBuffer, maxLength: readBuffer.count)
let help1 = Int(readBuffer[0] & 0xff) << 56 | Int(readBuffer[1] & 0xff) << 48
let help2 = Int(readBuffer[2] & 0xff) << 40 | Int(readBuffer[3] & 0xff) << 32
let help3 = Int(readBuffer[4] & 0xff) << 24 | Int(readBuffer[5] & 0xff) << 16
let help4 = (Int(readBuffer[6] & 0xff) << 8) | Int(readBuffer[7] & 0xff)
return Double(help1 | help2 | help3 | help4)
}
【问题讨论】:
-
数据在输入流中是如何表示的?作为整数或 IEEE 二进制双精度数?哪个字节顺序?你得到什么结果,你期望什么?
-
这是一个用java编写的双精度数组。
-
你在问 Swift 的人,所以添加信息可能会有所帮助如何 Java 编写一个双精度数组。
-
println(readBuffer)显示什么(读取操作后),结果应该是什么?
标签: swift casting type-conversion