如何将一个浮点值转换为字节数组? [英] How to convert a float value to byte array in swift?

查看:286
本文介绍了如何将一个浮点值转换为字节数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是以字节为单位获取数据的代码,但是我没有得到正确的字节数据作为float值

  let count = data.length / sizeof(UInt32)

//创建适当长度的数组:
var array = [UInt32](count:count,repeatedValue:0)

//将字节复制到数组
data.getBytes(& array,length:count * sizeof(UInt32))

print(array)


解决方案

Float to <$ c

$ b $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ (字节:& float1,长度:sizeofValue(float1))
print(data)//< 00002042>

...并返回到浮动

  var float2:Float = 0 
data.getBytes(& float2,length:sizeofValue(float2))
print(float2)// 40.0

(同样适用于其他简单类型例如 Double
Int ,...)



使用新的 Data 类型更新Swift 3

<$ p
print(data as NSData)/ var float1:Float = 40.0
let data = Data(buffer:UnsafeBufferPointer(start:& float1,count:1))
print /< 00002042>

let float2 = data.withUnsafeBytes {$ 0.pointee} as Float
print(float2)// 40.0

(另请参阅往返来自数据的快速数字类型。)

The code which I am using for getting data in bytes, but I am not getting correct byte data for float value

let count = data.length / sizeof(UInt32)

// create array of appropriate length:
var array = [UInt32](count: count, repeatedValue: 0)

// copy bytes into array
data.getBytes(&array, length:count * sizeof(UInt32))

print(array)

解决方案

Float to NSData:

var float1 : Float = 40.0
let data = NSData(bytes: &float1, length: sizeofValue(float1))
print(data) // <00002042>

... and back to Float:

var float2 : Float = 0
data.getBytes(&float2, length: sizeofValue(float2))
print(float2) // 40.0

(The same would work for other "simple" types like Double, Int, ...)

Update for Swift 3, using the new Data type:

var float1 : Float = 40.0
let data = Data(buffer: UnsafeBufferPointer(start: &float1, count: 1))
print(data as NSData) // <00002042>

let float2 = data.withUnsafeBytes { $0.pointee } as Float
print(float2) // 40.0

(See also round trip Swift number types to/from Data.)

这篇关于如何将一个浮点值转换为字节数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆