如何快速使用char * c =“ \ x0D \ x0A”

时间:2018-12-07 02:04:15

标签: swift

我想用“ \ x0D \ x0A”写入两个字节的char数据。

在Objective-c中,我只需要写char *c = "\x0D\x0A",就可以使用[NSData dataWithBytes:"\x0D\x0A" length:2]创建一个NSData。

现在,我想在Swift中使用相同的方法来创建一个包含这两个字节或其他内容的Data

但是当我使用var c = "\x0D\x0A"时会出错,如果将其更改为var c = "\\x0D\\x0A,则不会有任何错误,但是c是8个字符的真实字符串。

那我该如何解决呢?

2 个答案:

答案 0 :(得分:1)

在Objective-C中,char *可以轻松转换为byte,这意味着"\x0D"只是一个字节。在Swift中,如果要使用字节,也可以使用Uint8

所以char *c = "\x0D\x0A"可以代替let c:[Uint8] = [0x0D,0x0A],仅此而已。

答案 1 :(得分:1)

以下是用两个字节创建Data实例的三种方法:

let crlfData = Data([ 0x0d, 0x0a])

或:

let crlfData = "\u{0d}\u{0a}".data(using: .utf8)!

或:

var crlfData = Data()
crlfData.append(0x0d)
crlfData.append(0x0a)