Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 有没有一种方法可以;铸造;未经复制就将数据发送到[UInt8](字节数组),或者这样做不安全?_Arrays_Swift_Byte_Nsdata - Fatal编程技术网

Arrays 有没有一种方法可以;铸造;未经复制就将数据发送到[UInt8](字节数组),或者这样做不安全?

Arrays 有没有一种方法可以;铸造;未经复制就将数据发送到[UInt8](字节数组),或者这样做不安全?,arrays,swift,byte,nsdata,Arrays,Swift,Byte,Nsdata,我知道我能行 //Setup let originalBytes: [UInt8] = [0x0, 0x1, 0x2] let originalData = Data(originalBytes) //This let getByteArFromData: [UInt8] = [UInt8](originalData) 现在,我很确定getByteArFromData会将字节复制到新分配的内存中(这里我错了吗?) 随着数据的扩展(如图像、编解码器操作等),这会变得昂贵 我之所以想问这个问题,

我知道我能行

//Setup
let originalBytes: [UInt8] = [0x0, 0x1, 0x2]
let originalData = Data(originalBytes)

//This
let getByteArFromData: [UInt8] = [UInt8](originalData)
现在,我很确定
getByteArFromData
会将字节复制到新分配的内存中(这里我错了吗?)

随着数据的扩展(如图像、编解码器操作等),这会变得昂贵

我之所以想问这个问题,是因为我想通过一个类似数组的接口来操作数据,但据我所知,不安全的API是一条出路。所以

使用不安全的API是实现这一点的唯一方法吗?这是推荐的方法吗

我也玩过一些指针算法(只是进入了不安全的API,不确定如果我可以使用类似数组的接口,我是否应该投入时间)

以下是一些操场守则(如果您愿意,请评论并回答评论中的问题):


不需要强制转换数据,因为它支持在给定索引处访问
UInt8

顺便说一句,它还支持
isEmpty
,因此不需要检查count是否为0

var data = Data(repeating: 0, count: 5)
data.indices.forEach { data[$0] = UInt8($0) }
print(data[2])

不需要强制转换数据,因为它支持在给定索引处访问
UInt8

顺便说一句,它还支持
isEmpty
,因此不需要检查count是否为0

var data = Data(repeating: 0, count: 5)
data.indices.forEach { data[$0] = UInt8($0) }
print(data[2])

数据
是一个
(随机访问)集合
,因此已经有了一个“类似数组的界面”。您到底为什么想要一个
数组
?它做了什么,
数据
还没有做的事情?好吧,现在我知道数据有下标访问,什么都没有!对于个人项目,我正在编写一个程序,将VideoToolbox生成的H.264 AVCC数据转换为H.264 AVCC附录B。为此,我必须重写每个数据块之前的字节。
数据
是一个
(随机访问)集合
,因此已经有了一个“类似数组的接口”.您到底为什么需要
数组
?它做了什么,
数据
还没有做的事情?好吧,现在我知道数据有下标访问,什么都没有!对于个人项目,我正在编写一个程序,将VideoToolbox生成的H.264 AVCC数据转换为H.264 AVCC附录B。我必须重写每个数据块之前的字节才能做到这一点。不是“偶然”,而是(随机访问)集合合规性的一部分:)不是“偶然”,而是(随机访问)的一部分集合一致性:)