8

次の問題があります。古い関数を変換したい (Swift 3 ベータ 5 まで機能していた):

func binarytotype <T> (_ value: [UInt8], _: T.Type) -> T
{
    return value.withUnsafeBufferPointer
    {
        return UnsafePointer<T>($0.baseAddress!).pointee
    }
}

Swift 3 ベータ 6 シンタックスへ。この関数は、UInt8 の配列を別の型に変換します。次に例を示します。

let b: [UInt8] = [1,2,3,4,5,6,7,8]
var number: Double = binarytotype(b, Double.self)

しかし、今のところ、これはベータ 6 では機能しなくなりました。withMemoryRebound を使用する必要がありますが、実行する方法がわかりません。誰でも私を助けることができますか?

これの逆の機能は次のとおりです。

func typetobinary <T> (_ value: T) -> [UInt8]
{
    var v: T = value
    return withUnsafePointer(to: &v)
    {
        Array(UnsafeBufferPointer(start: UnsafePointer<UInt8>($0), count: MemoryLayout<T>.size))
    }
}

これももう機能しません。同じ問題。私のプロジェクトのいくつかでは両方が必要です。この逆関数は次のように呼び出されました。

var binary: [UInt8] = typetobinary(number)
4

1 に答える 1