类Java函数getLeastSignificantBits()&;在Swift中获取最重要的位? 我想知道一个函数/方法,在Swift的基础上获得最重要的位和最重要的位。UUID()。UUIDStand是一个随机生成的唯一通用标识符,也知道相反的,

类Java函数getLeastSignificantBits()&;在Swift中获取最重要的位? 我想知道一个函数/方法,在Swift的基础上获得最重要的位和最重要的位。UUID()。UUIDStand是一个随机生成的唯一通用标识符,也知道相反的,,swift,uuid,foundation,Swift,Uuid,Foundation,类Java函数getLeastSignificantBits()&;在Swift中获取最重要的位? 我想知道一个函数/方法,在Swift的基础上获得最重要的位和最重要的位。UUID()。UUIDStand是一个随机生成的唯一通用标识符,也知道相反的,创建一个基础。从LeastSignificantBits和mostssignificantbits这是从现有UUID()获取LeastSignificantBits和mostssignificantbits的字符串扩展。UUIString(例如

类Java函数getLeastSignificantBits()&;在Swift中获取最重要的位?

我想知道一个函数/方法,在Swift的基础上获得最重要的位和最重要的位。UUID()。UUIDStand是一个随机生成的唯一通用标识符,也知道相反的,创建一个基础。从LeastSignificantBits和mostssignificantbits这是从现有UUID()获取LeastSignificantBits和mostssignificantbits的字符串扩展。UUIString(例如:“6C5E3281-2471-4C39-9CE6-A882B16A28FE”)

extension String {
    func getUUIDMostSigBit() -> Int64 {
        let components = self.split(separator: "-")
        var mostSigBits = Int64(components[0], radix: 16)!
        mostSigBits <<= 16
        let c1 = Int64(components[1], radix: 16)!
        mostSigBits |= c1
        mostSigBits <<= 16
        let c2 = Int64(components[2], radix: 16)!
        mostSigBits |= c2
        return mostSigBits
    }
    
    func getUUIDLeastSigBit() -> Int64 {
        let components = self.split(separator: "-")
        var leastSigBits = Int64(components[3], radix: 16)!
        leastSigBits <<= 48
        let c4 = Int64(components[4], radix: 16)!
        leastSigBits |= c4
        return leastSigBits
    }
}
    extension Foundation.UUID {
    
    init(mostSigBits: Int64, leastSigBits: Int64) {
        var mostSigBits = mostSigBits
        var leastSigBits = leastSigBits
        let mostData = Data(bytes: &mostSigBits, count: MemoryLayout<Int64>.size)
        let leastData = Data(bytes: &leastSigBits, count: MemoryLayout<Int64>.size)
        let bytes = [UInt8](mostData) + [UInt8](leastData)
        let tuple: uuid_t = (bytes[7], bytes[6], bytes[5], bytes[4],
                             bytes[3], bytes[2], bytes[1], bytes[0],
                             bytes[15], bytes[14], bytes[13], bytes[12],
                             bytes[11], bytes[10], bytes[9], bytes[8])
        self.init(uuid: tuple)
    }
}
let uuidString: String = Foundation.UUID().uuidstring // "6C5E3281-2471-4C39-9CE6-A882B16A28FE"
let msb: Int64 = uuid.getUUIDMostSigBit() // 7808734334150593593
let lsb: Int64 = uuid.getUUIDLeastSigBit() // -7140834879873603330
let uuid: Foundation.UUID() = Foundation.UUID(mostSigBits: msb, leastSigBits: lsb) // Foundation.UUID().uuidstring = "6C5E3281-2471-4C39-9CE6-A882B16A28FE"