iPhone 5和iPhone 6中的不同Int类型

mcf*_*oft 4 int ios swift

我正在读取静态的Ints流到Ints数组中:

func create_int_array_from_nsmutable(nsdata:NSMutableData)  -> [Int] {
    let pointer = UnsafePointer<Int>(nsdata.bytes)
    let count = nsdata.length / sizeof(Int);
    // Get buffer pointer and make an array out of it
    let buffer = UnsafeBufferPointer<Int>(start:pointer, count:count)
    let array = [Int](buffer)
    return array;
}
Run Code Online (Sandbox Code Playgroud)

现在我意识到,在iPhone 5中,Int的大小为4,而iPhone 6或iPad的大小为8,这会导致完全不同的结果.

是否有人提示如何在这两种情况下读取此流并获得相同的结果?

我应该使用Int64Type吗?是否Int64因为这个原因,例如为了解决兼容性问题确切存在?

JAL*_*JAL 8

iPhone和iPad对于Int值类型具有不同大小的说法是错误的,32位和64位处理器具有这种差异.

来自Swift文档:

  • 在32位平台上,Int与Int32的大小相同.
  • 在64位平台上,Int与Int64的大小相同.

除非您需要使用特定大小的整数,否则请始终在代码中使用Int作为整数值.这有助于代码一致性和互操作性.即使在32位平台上,Int也可以存储-2,147,483,648和2,147,483,647之间的任何值,并且对于许多整数范围来说足够大.

如果需要在多个体系结构中保持Integer大小一致,请使用Int32.

  • "即使在32位平台上"也让我觉得很老. (2认同)