swift - 将 UInt8(或类似类型)转换为 Int 是否违背了 UInt8 的目的?

标签 swift memory integer

我将程序中的许多整数存储为 UInt8,其值范围为 0 - 255。现在稍后我将对其中的许多进行求和以获得能够存储到 Int 中的结果。在将值从 UInt8 添加到 Int 之前,我是否必须进行此转换,这是否违背了我一开始就使用较小数据类型的目的?我觉得只使用 Int 会更快,但内存占用更大。但是,当我必须面对许多降低速度和增加内存的转换时,为什么还要选择 UInt8?我是否遗漏了一些东西,或者较小的数据类型实际上应该仅与其他小数据类型一起使用?

最佳答案

当存储为 UInt8 而不是 Int 时,您所说的是每个变量的几个字节。这些数据类型是在计算历史的早期就构思出来的,当时内存是以低 KB 为单位进行测量的。甚至 Apple Watch 也有 512MB。

以下是 Apple 在 Swift Book 中所说的内容:

Unless you need to work with a specific size of integer, always use Int for integer values in your code. This aids code consistency and interoperability. Even on 32-bit platforms, Int can store any value between -2,147,483,648 and 2,147,483,647, and is large enough for many integer ranges.

我主要在处理 C 的代码中使用 UInt8UInt16UInt32。是的,来回转换是一件痛苦的事情。脖子。

关于swift - 将 UInt8(或类似类型)转换为 Int 是否违背了 UInt8 的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580575/

相关文章:

ios - 如何使用异步图像实现 UICollectionViewDelegateFlowlayout 的 sizeForItemAtIndexPath?

ios - SceneKit 围绕另一个节点 move 相机

ios - 在 tableView 中下载图像(_ :, cellForRowAt :)

c# - 在内存布局方面,继承与关联有何不同

iphone - 调用者此时不拥有的对象的引用计数的错误递减

php - PHP 按位运算的意外结果

swift - 在 Swift 包中包含 Playgrounds 的正确方法是什么?

r - 带有 doSMP 和 foreach 的并行随机森林大大增加了内存使用量(在 Windows 上)

java - 为什么 Integer.getInteger 不起作用?

syntax - 如何在 SystemVerilog 中以十六进制显示/打印解压类型?