Мне нужно прочитать массив UInt8
и добавить определенные байты в String
, но он дает мне ошибку, независимо от того, что я пробовал. +=
не работает с CChar(ptr[i])
жалуется. String.append()
не работает, он ожидает Character
, а не CChar
, и почему в аду все так конвертируется в Swift, но не CChar
в Character
? вот мой пример функКак я могу добавить UInt8 (из массива) в строку?
func FromBuf(ptr: UnsafeMutablePointer<UInt8>, length len: Int) -> String {
var i: Int = 0
while (i < len) {
if (i > 0) { s.append(CChar(ptr[i])) }
i++
}
return s
}
Кроме того, что было бы лучшим способом положить а String
из части UInt8
массива? Я пробовал это, но он не работает, var s = String(bytes: &ptr[3], encoding: NSASCIIStringEncoding)
. На самом деле этот инициализатор также не имеет возможности указать, сколько байтов должно получить от указателя.
Благодаря @Marc, это даже спасло меня от добавления одного символа за один раз –