Как преобразовать массив байтов в двойное значение в Swift?Преобразование байтового массива в double в Swift
(Это расширение NSInputStream)
Мой фрагмент прилагается ниже, но он не возвращает правильное двойное значение:
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. – AVEbrahimi
Вы спрашиваете людей Swift, поэтому было бы полезно добавить информацию *, как Java пишет массив двойников. –