Swift 将负数转换为Byte
-
在Swift中,整数可以为32位或64位,具体取决于平台。您的代码将在8位字节的64位平台上创建一个与
Int
类型相同的字节数组。如果要将转换限制为32位整数,则使用
Int32
而不是Int
,结果将是4个字节的数组,与平台无关。
let value: Int32 = -1333
let array = withUnsafeBytes(of: value.bigEndian, Array.init)
print(array) // [255, 255, 250, 203]
func byteArray<T>(from value: T) -> [UInt8] where T: FixedWidthInteger {
withUnsafeBytes(of: value.bigEndian, Array.init)
}
print(byteArray(from: -1333)) // [255, 255, 255, 255, 255, 255, 250, 203]
print(byteArray(from: Int32(-1333))) // [255, 255, 250, 203]
print(byteArray(from: Int16(-1333))) // [250, 203]
网友评论