Skip to content

Instantly share code, notes, and snippets.

@rosstulloch
Last active November 1, 2017 21:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rosstulloch/bde8348e2223ccb6f6eb0981da918c0c to your computer and use it in GitHub Desktop.
Save rosstulloch/bde8348e2223ccb6f6eb0981da918c0c to your computer and use it in GitHub Desktop.
Type Casts in Swift
func typecast<T,U>(_ a:T) -> U {
var _a = a
return withUnsafePointer(to: &_a) { (ptr:UnsafePointer<T>) -> U in
return UnsafeRawPointer(ptr).load(as: U.self)
}
}
func typecast_inplace<T,U>(_ a:inout T) -> U {
return withUnsafePointer(to: &a) { (ptr:UnsafePointer<T>) -> U in
return UnsafeRawPointer(ptr).load(as: U.self)
}
}
// Usage:
let bignum:UInt64 = 0xAAAAAAAABBBBBBBB
struct parts {
var a:UInt32
var b:UInt32
}
let a:parts = typecast(bignum)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment