Как преобразовать строку в байт в Swift?
Как String .getBytes()
в Java.
Как преобразовать строку в байт в Swift?
Ответ 1
Вы можете выполнить итерацию через кодовые точки UTF8 и создать массив:
var str = "hello, world"
var byteArray = [Byte]()
for char in str.utf8{
byteArray += [char]
}
println(byteArray)
Ответ 2
Существует более элегантный способ.
Swift 3:
let str = "Hello"
let buf = [UInt8](str.utf8)
Swift 4: (благодаря @PJ_Finnegan)
let str = "Hello"
let buf: [UInt8] = Array(str.utf8)
Ответ 3
Другой вариант, когда вам нужно перейти к функциям C-библиотеки:
let str = hexColour.cStringUsingEncoding(NSUTF8StringEncoding)
let x = strtol(str!, nil, 16)
Ответ 4
string.utf8
или string.utf16
должен делать что-то вроде того, о чем вы просите. См. Здесь для получения дополнительной информации: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html.
Ответ 5
String.withCString - это сверстник в Java String.getBytes(void). Используйте его так (добавление дополнительных сообщений):
let s = "42"
s.withCString {
( bytes : (UnsafePointer<CChar>) ) -> Void in
let k = atoi(bytes)
println("k is \(k)")
}
Ответ 6
изменить/обновить: 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]