2014-07-21 126 views
-2

如何在Swift中用UInt16兩個數字表示UInt32,反之亦然?用兩個無符號的16位整數表示一個無符號的32位值

例如,UInt32 65536應是(UINT16)1和(UINT16)65535,和(UINT16)0和(UINT16)65533結合(UInt32的)65533

+0

我對Swift的實現更感興趣 – Danil

+0

@JoshCaswell沒有那麼多。位移和OR/AND。 – Sulthan

+0

並在Swift中顯式類型轉換,@Sulthan,這在ObjC中不是必需的。 –

回答

3

簡單的按位運算

var number1: UInt16 = 1 
var number2: UInt16 = 65535 
let number: UInt32 = UInt32(number1) << 16 | UInt32(number2) 

number1 = UInt16(number >> 16) 
number2 = UInt16(number & 0xFFFF) 
+0

謝謝,我比你提供這個答案遲了一點 – Danil

1
func toInt16(value:UInt32)->(UInt16,UInt16){ 
    return (UInt16(value >> 16),UInt16(value & UInt32(UInt16.max))) 
} 

func toInt32(value1:UInt16,value2:UInt16)->UInt32{ 
    return (UInt32(value1) << 16 | UInt32(value2)) 
} 
相關問題