当前位置: 首页 > 面试题库 >

UInt8的NSData

张永嘉
2023-03-14
问题内容

最近,我迅速找到了源代码,并试图将其发布到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为

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


 类似资料:
  • 问题内容: 我知道Stack Overflow和其他地方都存在这样的问题。但是它似乎也发展了很多。 给定一个列表(基本上是一个swift字节数组),将其隐蔽到swift的最简单/惯用的方法是什么? 我对不使用NSData / NSString的方法特别感兴趣,因为如果Santa将Swift带入Linux的世界,那么无疑将没有NS库,我想知道如何做到这一点。迅速。 问题答案: 或者,您可以使用

  • 问题内容: 所以,我需要你的帮助。我找不到关于那个话题的任何东西。Golang是一种新鲜出炉的语言,因此对于像我这样的新手来说很难快速找到答案。 问题答案: 预先定义的Go 类型大小是特定于实现的,是32位还是64位(数字类型)。 这是将big-endian s 转换为s(s)的示例。 输出: 要么

  • 问题内容: 我想转换为,所以我写了一个const ,并尝试使用它进行转换。但是,代码会引发错误: 但是,如果我在分配后推迟类型转换,则代码可以解决。 我的问题: 这两个代码之间有什么区别吗? 为什么第一个会引发编译错误? 问题答案: 请参阅:https://golang.org/ref/spec#Constant_expressions 类型化常数的值必须始终可以由常数类型的值准确表示。以下常量表

  • 问题内容: 我有一个来自UDP数据包的 uint8 (无符号8位整数) 。Java仅使用带符号的原语。如何使用Java正确解析此数据结构? 问题答案: 只需将其作为字节读取,然后转换为int即可。 需要位掩码,因为否则,将位8设置为1的值将转换为负int。例: 因此,当您随后对其应用位掩码0xFF时,前导1将被抵消。供您参考:

  • 问题内容: http://play.golang.org/p/BoZkHC8_uA 我想将uint8转换为字符串,但不知道如何。 这给我 任何想法? 问题答案: 只需将其转换:

  • 问题内容: 我有代表特定灰度图像的特定np.array`数据。我需要使用SimpleBlobDetector(),不幸的是,该SimpleBlobDetector()仅接受8位图像,因此我需要转换此图像,显然会有质量损失。 我已经尝试过: 但是 cv2.imshow 不能提供预期的图像,但是会产生奇怪的失真… 最后,我只需要将np.float64转换为np.uint8即可缩放所有值,并截断其余所有