美文网首页goodiOS-swift
Swift3 Base64,Float,Byte相关编码与转换

Swift3 Base64,Float,Byte相关编码与转换

作者: 五灵云狐 | 来源:发表于2017-01-10 17:20 被阅读0次
    ///Base64编码
    static func encodeBase64(_ s:String) -> String {
        return (s.data(using: .utf8)!.base64EncodedString())
    }
    
    ///Base64解码
    static func decodeBase64(_ s:String) -> String {
        return String(data: Data(base64Encoded: s)!, encoding: .utf8)!
    }
    
    ///Base64转Float数组
    static func string2Floats(_ s:String) -> [Float] {
        //String转[UInt8]
        let bs = [UInt8](Data(base64Encoded: s)!)
        //[UInt8]转[Float]
        return Bytes2Floats(bs)
    }
    
    ///Float数组转Base64
    static func floats2String(_ fs:[Float]) -> String {
        //[Float]转[UInt8]
        let bs = Floats2Bytes(fs)
        //[UInt8]转String
        return Data(bytes: bs).base64EncodedString()
    }
    
    ///Byte数组转Float数组
    static func Bytes2Floats(_ bs:[UInt8]) -> [Float] {
        var fs = [Float]()
        for i in 0 ..< bs.count/4 {
            let arr = Array(bs[4*i ..< 4*i+4])
            var f:Float = 0
            memcpy(&f, arr, 4)
            fs.append(f)
        }
        return fs
    }
    
    ///Float数组转Byte数组
    static func Floats2Bytes(_ fs: [Float]) -> [UInt8] {
        var bs = [UInt8]()
        for var f in fs {
            bs += withUnsafePointer(to: &f) {
                $0.withMemoryRebound(to: UInt8.self, capacity: 4) {
                    Array(UnsafeBufferPointer(start: $0, count: 4))
                }
            }
        }
        return bs
    }

    ///四位Byte转Float
    static func Bytes2Float(_ bs:[UInt8]) -> Float {
        var f:Float = 0.0
        memcpy(&f, bs, 4)
        return f
    }
    
    ///Float转四位Byte
    static func Float2Bytes(_ value: Float) -> [UInt8] {
        var value = value
        let size = MemoryLayout<Float>.size
        return withUnsafePointer(to: &value) {
            $0.withMemoryRebound(to: UInt8.self, capacity: size) {
                Array(UnsafeBufferPointer(start: $0, count: size))
            }
        }
    }

主要参考自StackOverflow

相关文章

网友评论

    本文标题:Swift3 Base64,Float,Byte相关编码与转换

    本文链接:https://www.haomeiwen.com/subject/islxpttx.html