2016-10-17 4 views
6

Все, что я хочу сделать, это взять строку и получить ее шестнадцатеричное значение. Я следил за этим post. Вот код, я в своей детской площадке:Как распечатать содержимое переменной типа Data с помощью Swift?

let str = "Say Hello to My Little Friend" 
let data = str.data(using: String.Encoding.utf16) 
print("\(data!)") 

Однако мой код просто печатает:

"60 байт \ п"

Как я могу напечатать шестнадцатиричное значение? Для справки, он должен быть:

5361792048656c6c6f20746f204d79204c6974746c6520467269656e64 

ответ

12

Просто

print("\(data! as NSData)") 

PS: Ваш ожидается шестигранной является .utf8

16

Поскольку Data является последовательность Uint8, вы можете отобразить каждый байт в а затем присоединитесь к ним:

data.map { String(format: "%02x", $0) }.joined() 
+1

Мне нравится это лучше, чем принятый ответ, потому что он дает программисту полный контроль над выходным форматом. – JeremyP

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