2016-02-25 2 views
0

Я не могу преобразовать этот нижний массив байтов в строку в swift.Быстрое преобразование байт-массива в строку

let chars: [UInt8] = [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0] 

let datastring = NSString(data: chars, encoding: NSUTF8StringEncoding) 

Но в андроиде это просто отлично работает. Я не знаю, что случилось в быстром.

+0

Sorry свою опечатка ошибку .. теперь я обновил вопрос – nik

+1

У вас возникли ошибки? Это действительно UTF-8? – Thilo

+0

Какую версию Swift вы используете? – skyline75489

ответ

3

[UInt8] не NSData, так что вы не можете использовать NSString(data... инициализатору

Вы можете использовать

let chars: [UInt8] = [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0] 
let count = chars.count/sizeof(UInt8) 
let datastring = NSString(bytes: chars, length: count, encoding: NSASCIIStringEncoding) 
2

В Swift 3 вы можете использовать это:

import Foundation 
let chars: [UInt8] = [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0] 
let string = String(data: Data(chars), encoding: .utf8) 
+2

Simpler: 'String (bytes: chars, encoding: .utf8)' –

+0

@MartinR Спасибо за ваш ответ. Вы должны рассмотреть возможность добавления его самостоятельно. –

Смежные вопросы