使用案例
var index = 0
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
index += 150
let bytes = index.hw_to4Bytes()
HWPrint(bytes)
let x = hw_getInt(bytes)
HWPrint(x)
}
bytes转Int
func hw_getInt(_ array:[UInt8]) -> Int {
var value : UInt32 = 0
let data = NSData(bytes: array, length: array.count)
data.getBytes(&value, length: array.count)
value = UInt32(bigEndian: value)
return Int(value)
}
Int转bytes
extension Int {
// MARK:- 转成 2位byte
func hw_to2Bytes() -> [UInt8] {
let UInt = UInt16.init(Double.init(self))
return [UInt8(truncatingIfNeeded: UInt >> 8),UInt8(truncatingIfNeeded: UInt)]
}
// MARK:- 转成 4字节的bytes
func hw_to4Bytes() -> [UInt8] {
let UInt = UInt32.init(Double.init(self))
return [UInt8(truncatingIfNeeded: UInt >> 24),
UInt8(truncatingIfNeeded: UInt >> 16),
UInt8(truncatingIfNeeded: UInt >> 8),
UInt8(truncatingIfNeeded: UInt)]
}
// MARK:- 转成 8位 bytes
func intToEightBytes() -> [UInt8] {
let UInt = UInt64.init(Double.init(self))
return [UInt8(truncatingIfNeeded: UInt >> 56),
UInt8(truncatingIfNeeded: UInt >> 48),
UInt8(truncatingIfNeeded: UInt >> 40),
UInt8(truncatingIfNeeded: UInt >> 32),
UInt8(truncatingIfNeeded: UInt >> 24),
UInt8(truncatingIfNeeded: UInt >> 16),
UInt8(truncatingIfNeeded: UInt >> 8),
UInt8(truncatingIfNeeded: UInt)]
}
}