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