如何在Swift中将String转换为byte?
与Java中的String .getBytes()
类似。
答案 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.utf8
或string.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