【问题标题】:UInt8[4] to Int in swiftUInt8[4] 快速转换为 Int
【发布时间】:2016-03-12 21:46:17
【问题描述】:

我使用以下函数来实现 Int 到 UInt8[4] 的转换器:

    func toByteArray(var value: Int) -> [UInt8] {
    var msgLength = [UInt8](count: 4, repeatedValue: 0)

    for i in 0...3 {
        msgLength[i] = UInt8(0x0000FF & value >> Int((3 - i) * 8))
    }
    return msgLength
    }

如何将 Int 实现为 UInt8[4]?

【问题讨论】:

  • 可以参考thisSO链接

标签: swift int uint


【解决方案1】:

看到这个答案:

How to convert a type to/from a byte array

func toByteArray( value: Int) -> [UInt8] {
    var msgLength = [UInt8](count: 4, repeatedValue: 0)

    for i in 0...3 {
        msgLength[i] = UInt8(0x0000FF & value >> Int((3 - i) * 8))
    }
    return msgLength
}

// call your function to generate the byte array.  Reverse the order
// since fromByteArray wants them in the reverse (little endian) order    
let b = Array(toByteArray(1234567890).reverse())

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

let i = fromByteArray(b, Int32.self)
print(i) // 1234567890

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    相关资源
    最近更新 更多