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

时间:2014-07-30 02:26:57

标签: swift

如何在Swift中将String转换为byte? 与Java中的String .getBytes()类似。

7 个答案:

答案 0 :(得分:91)

有一种更优雅的方式。

斯威夫特3:

let str = "Hello"
let buf = [UInt8](str.utf8)

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

let str = "Hello"
let buf: [UInt8] = Array(str.utf8)

答案 1 :(得分:12)

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

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

答案 2 :(得分:2)

String.withCString是Java的String.getBytes(void)的对等体。像这样使用它(添加了额外的输入):

let s = "42"
s.withCString {
  ( bytes : (UnsafePointer<CChar>) ) -> Void in
  let k = atoi(bytes)
  println("k is \(k)")
}

答案 3 :(得分:2)

另一种选择,当您需要能够传递给C库函数时:

let str = hexColour.cStringUsingEncoding(NSUTF8StringEncoding)
let x = strtol(str!, nil, 16)

答案 4 :(得分:2)

编辑/更新: Xcode 7.2.1•Swift 2.1.1

extension String {
    var utf8Array: [UInt8] {
        return Array(utf8)
    }
}

"12345678".utf8Array   // [49, 50, 51, 52, 53, 54, 55, 56]

答案 5 :(得分:1)

string.utf8string.utf16应该像您要求的那样做。有关详细信息,请参阅此处:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

答案 6 :(得分:0)

Swift 4.1。

这取决于你想要达到的目标。对于同样的问题,我用了......

let message = "Happy"
for v in message.utf8 {
    print(v)
}

然后我在单个字节上执行了我需要的操作。输出是:

//72
//97
//112
//112
//121

https://developer.apple.com/documentation/swift/string.utf8view