swift - 从 Int 转换为 Hex 值,然后将 hex 值附加到 Data 对象后出现错误 Swift?
问题描述
在尝试附加数据对象转换为十六进制值后,我有如下代码,但它给了我以下错误:
在展开可选值时意外发现 nil
let n = 585
let result = 255 - n % 256 //182 is result
let hexValue = String(result, radix: 16) //b6 is result
var returnMsg = "[1,1,1, ,#00300".data(using: .utf8) as! Data
returnMsg.append(UInt8(hexValue)!)
在这里,我试图将 b6 添加到数据对象。
解决方案
您使用字符串result
作为十六进制字符串获取只是附加到returnMsg
. 只需附加result
.
let n = 585
let result = 255 - n % 256 //182 is result
var returnMsg = "[1,1,1, ,#00300".data(using: .utf8)!
returnMsg.append(UInt8(result))
您的崩溃是由 force-unwrapping 引起的UInt8(hexValue)
。传入字符串b6
会给出nil
结果,而 force-unwrapnil
总是会导致崩溃和您看到的错误消息。接受字符串的UInt8
初始化程序只接受一个以 10 为底的整数。您可以在文档中看到这一点:
传递的字符串
description
可以以加号或减号字符(+ 或 -)开头,后跟一个或多个数字 (0-9)。如果
description
格式无效,或者它以 10 为基数表示的值不可表示,则结果为nil
.
推荐阅读
- javascript - 无法在 index.js 中加载 markdown.md
- javascript - 无法访问嵌套对象属性 TS
- javascript - 如何在移动设备上将 draggable 设置为 false 以进行成帧运动或响应地更改拖动尺寸以适应不同的屏幕尺寸
- r - Split() 函数用于拆分成组,而不是单个元素 - 在 R 中
- django - 当前路径 api/v1/latest-products 与其中任何一个都不匹配
- r - sas7bdat 日期格式存储为数字
- javascript - 随机按钮的结果不显示
- .net - 获取 Global.asax 中的 ASP.NET MVC 区域
- flutter - 如何解决参数类型“字符串?” 不能分配给参数类型“字符串”
- javascript - 如何找到动态xpath(每次重新加载页面时都会更改)