如何将一个浮点值转换为字节数组? [英] How to convert a float value to byte array in swift?
问题描述
我使用的是以字节为单位获取数据的代码,但是我没有得到正确的字节数据作为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屋!