string - ejemplo - utf8_decode javascript
Método Swift 3 para crear datos codificados en utf8 a partir de cadenas (2)
Es sencillo:
let input = "Hello World"
let data = input.data(using: .utf8)!
Si desea terminar data
con nulo, simplemente append
un 0 a él. O puede llamar a cString(using:)
let cString = input.cString(using: .utf8)! // null-terminated
Sé que hay un montón de preguntas previas a Swift3 con respecto a NSData. Tengo curiosidad por saber pasar de un Swift3 String
a un utf8 codificado (con o sin terminación nula) al objeto Swift3 Data
.
Lo mejor que he encontrado hasta ahora es:
let input = "Hello World"
let terminatedData = Data(bytes: Array(input.nulTerminatedUTF8))
let unterminatedData = Data(bytes: Array(input.utf8))
Tener que hacer la construcción de Array()
intermedia parece incorrecta.
NSString
métodos NSFoundation
marco NSFoundation
deben descartarse para los equivalentes de Swift Standard Library. Los datos se pueden inicializar con cualquier Sequence
cuyos elementos sean UInt8
. String.UTF8View
cumple este requisito.
let input = "Hello World"
let data = Data(input.utf8)
// [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
No existe una representación de datos terminada nula de una cadena. La terminación de cadena nula es un detalle de implementación del lenguaje C y no debe filtrarse fuera.
Si planea trabajar con API de C, consulte la siguiente propiedad del tipo de String
:
public var utf8CString: ContiguousArray<CChar> { get }