---
title: "unsafeBitCast(_:to:)"
framework: swift
role: symbol
role_heading: Function
path: "swift/unsafebitcast(_:to:)"
---

# unsafeBitCast(_:to:)

Returns the bits of the given instance, interpreted as having the specified type.

## Declaration

```swift
func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
```

## Discussion

Discussion Use this function only to convert the instance passed as x to a layout-compatible type when conversion through other means is not possible. Common conversions supported by the Swift standard library include the following: Value conversion from one integer type to another. Use the destination type’s initializer or the numericCast(_:) function. Bitwise conversion from one integer type to another. Use the destination type’s init(truncatingIfNeeded:) or init(bitPattern:) initializer. Conversion from a pointer to an integer value with the bit pattern of the pointer’s address in memory, or vice versa. Use the init(bitPattern:) initializer for the destination type. Casting an instance of a reference type. Use the casting operators (as, as!, or as?) or the unsafeDowncast(_:to:) function. Do not use unsafeBitCast(_:to:) with class or pointer types; doing so may introduce undefined behavior. Warning: Calling this function breaks the guarantees of the Swift type system; use with extreme care. Warning: Casting from an integer or a pointer type to a reference type is undefined behavior. It may result in incorrect code in any future compiler release. To convert a bit pattern to a reference type: convert the bit pattern to an UnsafeRawPointer. create an unmanaged reference using Unmanaged.fromOpaque() obtain a managed reference using Unmanaged.takeUnretainedValue() The programmer must ensure that the resulting reference has already been manually retained. Parameters: x: The instance to cast to type. type: The type to cast x to. type and the type of x must have the same size of memory representation and compatible memory layout. Returns: A new instance of type U, cast from x.

## See Also

### Instance Casting

- [unsafeDowncast(_:to:)](swift/unsafedowncast(_:to:).md)
