Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Swift中的subdata方法似乎不是我想要的那样

Swift中的subdata方法似乎不是我想要的那样
EN

Stack Overflow用户
提问于 2019-04-26 16:34:08
回答 1查看 353关注 0票数 0

我在游乐场上有以下代码(Swift 5)

代码语言:javascript
运行
AI代码解释
复制
import Foundation

let array : [UInt8] = [0,1,2,3,4,5,6,7,8,9,10,11,12]
public extension Data {
    func uint32( offset:Int)-> UInt32{

        let range = offset..<(offset+4)
        let copy = self.subdata(in: range)

        print(copy as NSData) // Prints  <02030405>

        return copy.withUnsafeBytes{
            $0.load(fromByteOffset: 0, as: UInt32.self).bigEndian
        }
    }
}

let data = Data(array)
let datadropped = data.dropFirst(2)
print(data as NSData) // Prints <00010203 04050607 08090a0b 0c>
print(datadropped as NSData)   // Prints <02030405 06070809 0a0b0c>


let sub =  data.subdata(in: 4..<8 )  // gives 4,5,6,7
let sub2 = datadropped.subdata(in: 4..<8) // also gives 4,5,6,7

data.uint32(offset: 2)

现在,如果我将最后一行中的偏移量设置为0或1,它就会崩溃。2的偏移量有效,但返回一个使用字节02,03,04,05构造的uint,这不是我所期望的。文档声明dropFirst()和subdata()返回数据的副本。

我使用下面的代码让我的uint32函数工作。但我想知道为什么初始函数中的字节范围不起作用。如何强制数据的真正新副本?如果有人能给我解释一下,我将不胜感激。

代码语言:javascript
运行
AI代码解释
复制
extension Data
    func uint32( offset:Int)-> UInt32{
        let array = Array(0...3).map {
            uint8(offset: $0+ offset)
        }
        return array.withUnsafeBytes{
            $0.load(fromByteOffset: 0, as: UInt32.self).bigEndian
        }
    }

   func uint8( offset:Int)-> UInt8 {
        return self.withUnsafeBytes{
            $0.load(fromByteOffset: offset, as: UInt8.self).bigEndian
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-26 16:53:34

datadropped是一个Slice

它包含数据的子集,但它与原始集合共享相同的索引。它崩溃是因为datadropped的第一个索引是2,而不是0。

要获得一个新的Data对象,您必须编写

代码语言:javascript
运行
AI代码解释
复制
let datadropped = Data(data.dropFirst(2))

有关切片的更多信息,请观看WWDC 2018: Using Collections Effectively (从11:00开始)

注意:您可以删除fromByteOffset参数

代码语言:javascript
运行
AI代码解释
复制
return copy.withUnsafeBytes{
    $0.load(as: UInt32.self).bigEndian
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55871727

复制
相关文章
CNN:我不是你想的那样
每当我们训练完一个CNN模型进行推理时候,一旦出现人类无法解释的现象就立刻指责CNN垃圾,说这都学不会?其实你可能冤枉它了,而本文试图为它进行辩护。
lujohn3li
2020/11/30
7040
CNN:我不是你想的那样
躺平不是我想要的生活!
这不是一个对程序员友好的话题,当局者迷,躺平也不是这个社会青年人该有的态度,一个工作10多年的人居然说自己不年轻,多少显得滑稽,也说明IT这个行业对老人是多么的不友好!思维的懒惰,和身体的勤奋,往往让我们继续选择原地踏步,问题依旧在,得不到改变,想的也不是特别深入,先抛出来,记下来,或许下次谈起,也就能找到出路了!
呱牛笔记
2023/05/02
2890
躺平不是我想要的生活!
微信小程序--不是你想的那样
2017年1月9日凌晨,微信[如约]发布了小程序,这个[如约]是真正的如约,0点刚过就放出来了,可不是我们以为的上班时间8点。早上8点起来,已经被刷爆了朋友圈、公众号、微信群、自媒体等,到处都在谈论微信小程序,从其功能、推广、红利、使用等等进行了一场空前范围内的大讨论,真真实实的热点。
飞雪无情
2018/08/28
6260
微信小程序--不是你想的那样
ArrayList和LinkendList不是我们想的那样?
集合作为我们日常开发中最常用的存储数据的容器,是开发过程中使用最频繁的对象类型之一,但是有多种集合类型,不同的集合类型的实现方式不同,使用的场景也不同。这里就比较一下ArrayList和LinkedList。
故里
2020/11/25
6220
ArrayList和LinkendList不是我们想的那样?
憋瞎说,大数据不是你想的那样!
学生党以及很多没设计过大数据开发的小伙伴呢,都对大数据这么一个领域感到非常非常的好奇非常非常的神秘,我今天就非要戳穿给你们看。
木东居士
2019/09/29
4910
人工智能根本不是你想的那样!
小E最近在小破站重温了下斯皮尔伯格的经典电影《人工智能》,看到结尾,还是忍不住流出老父亲般感动的的泪水。
腾讯NEXT学位
2020/07/17
5080
人工智能根本不是你想的那样!
Stable Diffusion公司开源大语言模型StableLM,网友:不是我想要的!
  整理 | 朱珂欣 出品 | CSDN(ID:CSDNnews) 众所周知,去年初创公司 Stability AI 发布的 AI 图像生成工具 Stable Diffusion,成为一种革命性的图像模型,也使 AI“文生图”实现了飞速的发展。 满载着大家对其“不再局限于开发图像生成”和“开源”的期待,在 4 月 20 日, Stability AI 宣布推出开源大型语言模型(LLM)—— StableLM。 (图源:Stability AI 官方博客截图) 小参数大训练,开源备受热捧 据 Stabil
AI科技大本营
2023/05/08
3140
Stable Diffusion公司开源大语言模型StableLM,网友:不是我想要的!
憋瞎说,大数据不是你想的那样 No.114
学生党以及很多没设计过大数据开发的小伙伴呢,都对大数据这么一个领域感到非常非常的好奇非常非常的神秘,我今天就非要戳穿给你们看。
大蕉
2018/10/26
4250
Swift中构造方法的解析 原
      构造方法是一个类创建对象最先也是必须调用的方法,在Objective-C中,开发者更习惯称这类方法为初始化方法。在Objective-C中的初始化方法与普通函数相比除了要以init抬头外并无太严格的分界,而在Swift语言体系中,构造方法与普通的方法分界十分严格,从格式写法上就有不同,普通方法函数要以func声明,构造方法统一为init命名,不需要func关键字声明,不同的构造方法采用方法重载的方式创建。
珲少
2018/08/15
1.1K0
Swift中构造方法的解析
                                                                            原
马斯克猛烈抨击 ChatGPT引轰动:“这不是我想要的”
作者 | Tina 埃隆·马斯克 (Elon Musk) 否认了他最著名的作品之一。 特斯拉、SpaceX 和 Twitter 的首席执行官以热爱工作每天睡觉不超过 6 小时而闻名,他脑子里想着几件事,其中一件事关 OpenAI 的发展,太平洋时间凌晨 1 点 36 分,他发表推文指责 OpenAI 违背初心:被微软控制,只顾赚钱。 作为联合创始人之一,马斯克对 OpenAI 的现状非常不满:“OpenAI 最初是作为一家开源(这就是为什么我把它命名为‘Open’AI)的非营利性公司而创建的,为了抗衡
深度学习与Python
2023/03/29
5700
马斯克猛烈抨击 ChatGPT引轰动:“这不是我想要的”
iOS开发中swift中的类方法和实例方法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/79993973
用户1451823
2018/09/13
1.8K0
iOS开发中swift中的类方法和实例方法
13条“不正常”数据,世界不是你想的那样…
“蓝色字” 可关注我们! 1. 在刷朋友圈时间上,“60前”平均花费时间的最小值为47分钟,“90后”为42分钟。 各年龄组平均刷朋友圈时间最小值估计,腾讯研究院 2015年6月 “60前”刷朋友
小莹莹
2018/04/20
8260
13条“不正常”数据,世界不是你想的那样…
Swift 中的抽象类型和方法
在面向对象的编程中,抽象类型提供了一个基础实现,其他类型可以从中继承,以获得某种共享的、共同的功能。抽象类型与普通类型的区别在于,它们永远不会被当作原样使用(事实上,一些编程语言甚至阻止抽象类型被直接实例化),因为它们的唯一目的是作为一组相关类型的共同父类。
Swift社区
2022/05/19
8060
Swift 中的抽象类型和方法
在面向对象的编程中,抽象类型提供了一个基础实现,其他类型可以从中继承,以获得某种共享的、共同的功能。抽象类型与普通类型的区别在于,它们永远不会被当作原样使用(事实上,一些编程语言甚至阻止抽象类型被直接实例化),因为它们的唯一目的是作为一组相关类型的共同父类。
韦弦zhy
2022/03/30
8670
spring-boot-2.0.3之quartz集成,不是你想的那样哦!
前言   开心一刻     晚上回家,爸妈正在吵架,见我回来就都不说话了,看见我妈坐在那里瞪着我爸,我就问老爸“你干什么了惹我妈生这么大气?”  我爸说“没有什么啊,倒是你,这么大了还没有媳妇,要是你
青石路
2018/12/19
1.2K0
看看是不是你想要的按键处理
https://qqqqqbucket.oss-cn-beijing.aliyuncs.com/%E5%8D%95%E7%89%87%E6%9C%BA%E6%A8%A1%E5%9D%97%E5%8C%96%E7%A8%8B%E5%BA%8F/%E7%9C%8B%E7%9C%8B%E6%98%AF%E4%B8%8D%E6%98%AF%E4%BD%A0%E6%83%B3%E8%A6%81%E7%9A%84%E6%8C%89%E9%94%AE%E5%A4%84%E7%90%86/20191014_021028.mp4
杨奉武
2019/10/14
3920
看看是不是你想要的按键处理
原来人工智能并不是都是你想的那样
本文探讨了人工智能在商业和日常生活中的影响,以及人们对其产生的误解。文章指出,人工智能并非如人们所想的那样强大和无处不在,事实上,它仍然依赖于人类的指导和监督。虽然基于人工智能的系统可以处理大量数据并快速学习,但它们仍然受到设计它们的价值观和假设的限制。因此,人们需要对人工智能技术有一个现实的认识,并探索其在商业和日常生活中的应用,而不是被流行文化中的错误预测所误导。
人工智能的秘密
2017/12/22
5620
原来人工智能并不是都是你想的那样
Swift Codable 将任意类型解析为想要的类型
默认情况下,使用 Swift 内置的 Codable API 解析 JSON 时,我们的属性类型需要和Json 中的类型保持一致,否则就会解析失败。
韦弦zhy
2021/11/24
2.1K0
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
    小白问小明:“你前面有一个5米深的坑,里面没有水,如果你跳进去后该怎样出来了?”小明:“躺着出来呗,还能怎么出来?”小白:“为什么躺着出来?”小明:“5米深的坑,还没有水,跳下去不死就很幸运了,残是肯定会残的,不躺着出来,那能怎么出来?”小白:“假设没死也没残呢?”小明:“你当我超人了? 那也简单,把脑子里的水放出来就可以漂出来了。”小白:“你脑子里有这么多水吗?”小明:“我脑子里没那么多水我跳下去干嘛?” 
青石路
2018/12/06
2.5K0
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
[Swift] Swift 中的遍历
上一篇曾经说过,2020 年我接触了项目管理、iOS 开发、goLang 开发,所以,后续更新的内容也会逐步丰富起来。
CnPeng
2021/01/18
3.4K0
[Swift] Swift 中的遍历

相似问题

:悬停目标不是我想要的那样工作。

40

URL映射不是我想要的那样工作

12

c#中的除法不是我想要的那样

52

我的代码不是像我想要的那样排队

12

DynamoDB结果的结构不是我想要的那样

210
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档