加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 来自UInt8的NSData

发布时间:2020-12-14 18:57:08 所属栏目:百科 来源:网络整理
导读:我最近在 swift中找到了一个源代码,我正在尝试将它转换为Objective-C.我无法理解的一件事是: var theData:UInt8!theData = 3;NSData(bytes: [theData] as [UInt8],length: 1) 任何人都可以帮助我使用Obj-C等效物吗? 为了给你一些上下文,我需要将UInt8作为U
我最近在 swift中找到了一个源代码,我正在尝试将它转换为Objective-C.我无法理解的一件事是:

var theData:UInt8!

theData = 3;
NSData(bytes: [theData] as [UInt8],length: 1)

任何人都可以帮助我使用Obj-C等效物吗?

为了给你一些上下文,我需要将UInt8作为UInt8发送到CoreBluetooth外设(CBPeripheral).浮点数或整数不起作用,因为数据类型太大.

解决方法

如果你写Swift代码稍微简单一点

var theData : UInt8 = 3
let data = NSData(bytes: &theData,length: 1)

那么将它转换为Objective-C是相对简单的:

uint8_t theData = 3;
NSData *data = [NSData dataWithBytes:&theData length:1];

对于多个字节,您将使用数组

var theData : [UInt8] = [ 3,4,5 ]
let data = NSData(bytes: &theData,length: theData.count)

转换为Objective-C as

uint8_t theData[] = { 3,5 };
NSData *data = [NSData dataWithBytes:&theData length:sizeof(theData)];

(你可以在最后一个语句中省略address-of运算符,
参见例如How come an array’s address is equal to its value in C?).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读