【发布时间】:2020-03-09 21:52:28
【问题描述】:
有什么方法可以将不同整数大小的数组转换为另一种数组类型?
例如,在 C 中,我可以这样做:
unsigned char byteArray[] = { 0x1, 0x5, 0xF, 0x3, 0xA5, 0x3, 0x8, 0x8, 0xAB };
unsigned long long *largeArray = (unsigned long long *)(byteArray);
这将使largeArray 等于{ 0x80803A5030F0501, 0x51B76EB7140024AB }。
在 Swift 中有没有类似的东西?例如,类似:
let byteArray: [UInt8] = [0x1, 0x5, 0xF, 0x3, 0xA5, 0x3, 0x8, 0x8, 0xAB]
let largeArray = [UInt64](byteArray)
我知道可以以编程方式进行,我只是想知道是否有内置方法,然后再深入研究制作自己的东西来投射它们。
任何帮助将不胜感激!
【问题讨论】:
-
一般来说,将字符数组转换为具有更高等级的整数类型的数组会由于对齐而导致未定义的行为。
-
你是对的。我正在为 BigInteger 库执行此操作,并且我希望能够使用任何类型的数组初始化我的 BigNumber 结构。我的结构将数字表示为 UInt64 的数组,但我希望它可以从 UInt32 数组构造。
标签: c arrays swift pointers casting