【问题标题】:Create a byte array in Swift 2.2 using an object holding String properties在 Swift 2.2 中使用持有 String 属性的对象创建一个字节数组
【发布时间】:2016-07-29 03:04:55
【问题描述】:

假设我有一个具有 10 个属性的类 foo,所有这些属性都是 String 类型,我想创建一个长度为 10 的字节数组,如下所示:

let data = NSData(bytes: [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,] as [UInt8], length:10)

0x00 的每个实例都是类 foo 的属性。我将如何去创造它?

class foo {
var mailbox = "0x00"
var cmd = "0x00"
var data0 = "0x00"
var data1 = "0x00"
var data2 = "0x00"
var data3 = "0x00"
var data4 = "0x00"
var data5 = "0x00"
var data6 = "0x00"
var data7 = "0x00"

}

那么字节数组将包含:

let data = NSData(bytes:[foo.mailbox, foo.cmd, foo.data0, foo.data1, foo.data2, foo.data3, foo.data4, foo.data5, foo.data6, foo.data7] as [UInt8], length:10)

【问题讨论】:

  • 我不明白你在问什么。您想将 NSData 对象中的字节分解为单独的属性吗?总是正好有 10 个字节吗?字节与字符串有什么关系?你为什么要这样做?似乎是一种处理字节的尴尬方式。
  • 不,我想做相反的事情并从属性创建一个 NSData 对象。属性为Strings格式,需要转成字节。
  • 如何将字符串映射到单个字节?每个字符串是否只包含一个 ASCII 字符?说清楚,伙计!解决编程问题的第一步是清楚、详细、具体地描述您需要做什么。
  • 一个字符串看起来像这样“0x5A”
  • 那代表什么?这个问题绝对零意义。您想如何将字符串映射到数据?

标签: swift foundation


【解决方案1】:

我通过从字符串属性中删除“0x”并在进行十六进制到十进制转换后将字符串转换为 Int 来解决这个问题。然后我将它转换为我的字节数组的 UInt8。

let mailbox = Int(converttoDec(foo.mailbox.stringByReplacingOccurrencesOfString("0x", withString: ""))

let data = NSData(bytes:[UInt8(mailbox!), UInt8(command!), UInt8(data0!), UInt8(data1!), UInt8(data2!), UInt8(data3!), UInt8(data4!), UInt8(data5!), UInt8(data6!), UInt8(data7!),] as [UInt8], length:10)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2021-12-07
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多