如何在Swift中将String转换为byte?

YuX*_* Fu 32 swift

如何在Swift String .getBytes()中将String转换为byte?就像在Java中一样.

Alb*_*igo 96

有一种更优雅的方式.

斯威夫特3:

let str = "Hello"
let buf = [UInt8](str.utf8)
Run Code Online (Sandbox Code Playgroud)

斯威夫特4 :(感谢@PJ_Finnegan)

let str = "Hello"
let buf: [UInt8] = Array(str.utf8)
Run Code Online (Sandbox Code Playgroud)

  • 显然不在Swift 4中工作.使用`var buf:[UInt8] = Array(str.utf8)`. (5认同)

Con*_*nor 14

您可以遍历UTF8代码点并创建一个数组:

var str = "hello, world"
var byteArray = [Byte]()
for char in str.utf8{
    byteArray += [char]
}
println(byteArray)
Run Code Online (Sandbox Code Playgroud)

  • [(Byte)]与“ UInt8”不同 (2认同)
  • @JoeDaniels我不知道.我甚至不确定是否写过. (2认同)

Leo*_*bus 12

编辑/更新:Xcode 11.5 • Swift 5.2

extension StringProtocol {
    var data: Data { .init(utf8) }
    var bytes: [UInt8] { .init(utf8) }
}
Run Code Online (Sandbox Code Playgroud)
"12345678".bytes   // [49, 50, 51, 52, 53, 54, 55, 56]
Run Code Online (Sandbox Code Playgroud)