конвертировать байты в текст Unicode в Swift 5 - PullRequest
1 голос
/ 30 сентября 2019

У меня есть массив в массиве байтов Uint8, и я конвертирую их в этот текст Unicode. так что я могу отправить его в сокет UDP.

байтов массив:

[48, 48, 48, 48, 48, 48, 163, 62, 0, 0, 22, 11, 0, 0, 138, 1, 143, 222, 152, 116, 184, 233, 150, 75, 79, 130, 129, 153, 78, 125, 213, 48, 133, 29, 54, 191, 4, 7, 161, 80, 135, 36, 120, 181, 194, 57, 68, 246, 53, 29, 159, 201, 7, 224, 0, 155, 8, 64, 34, 56, 117, 216, 77, 143, 80, 210, 42, 66, 187, 231, 26, 154, 255, 15, 7, 27, 60, 135, 205, 214, 12, 222, 199, 114, 120, 244, 222, 163, 196, 244, 37, 117, 133, 40, 199, 50, 244, 48, 86, 7, 86, 240, 92, 128, 36, 247, 185, 23, 9, 13, 61, 147, 162, 198, 14, 12, 10, 23, 13, 181, 223, 147, 117, 46, 245, 178, 205, 76, 71, 127, 56, 174, 2, 145, 224, 148, 100, 19, 219, 37, 117, 83, 17, 108, 135, 98, 21, 75, 46, 232, 31, 198, 246, 234, 140, 31, 80, 115, 185, 68, 155, 54, 215, 180, 58, 177, 70, 8, 63, 241, 186, 208, 61, 150, 165, 167, 166, 111, 96, 187, 101, 26, 250, 54, 193, 247, 156, 48, 127, 151, 76, 66, 146, 205, 39, 154, 31, 251, 244, 123, 62, 129, 19, 204, 205, 17, 61, 230, 66, 110, 228, 68, 193, 104, 191, 85, 30, 251, 228, 146, 23, 142, 165, 179, 220, 68, 235, 83, 143, 126, 233, 175, 123, 207, 103, 34, 4, 99, 153, 144, 241, 130, 15, 208, 67, 234, 56, 161, 51, 91, 76, 253, 72, 71, 68, 83, 164, 138, 120, 13, 176, 139, 80, 91, 155, 179, 193, 104, 181, 1, 233, 127, 97, 132, 181, 114, 190, 255, 138, 234, 101, 170, 38, 56, 46, 214, 207, 158, 207, 207, 43, 253, 194, 89, 48, 48, 12, 63, 89, 145, 214, 80, 217, 119, 94, 90, 227, 170, 239, 116, 54, 25, 42, 70, 217, 204, 155, 139, 18, 69, 110, 193, 252, 4, 82, 240, 190, 175, 116, 36, 72, 125, 110, 160, 22, 228, 2, 157, 101, 111, 43, 65, 169, 10, 121, 188, 128, 148, 212, 205, 255, 220, 196, 28, 53, 234, 108, 86, 119, 15, 182, 127, 208, 243, 3, 141, 233, 135, 161, 99, 131, 202, 90, 59, 18, 175, 167, 99, 95, 76, 153, 111, 11, 169, 128, 162, 167, 236, 27, 109, 111, 154, 248, 244, 212, 221, 91, 230, 62, 2, 212, 245, 234, 113, 169, 93, 154, 32, 234, 127, 81, 59, 49, 46, 99, 73, 168, 70, 93, 159, 111, 25, 42, 86, 16, 255, 192, 38, 131, 225, 222, 68, 154, 226, 28, 235, 123, 149, 147, 52, 176, 17, 25, 21, 98, 213, 38, 229, 158, 115, 209, 86, 67, 36, 103, 40, 217, 244, 158, 225, 248, 183, 97, 199, 81, 5, 144, 44, 233, 81, 255, 187, 168, 34, 223, 81, 201, 15, 112, 240, 93, 230, 244, 236, 221, 222, 18, 23, 21, 180, 21, 204, 43, 94, 27, 184, 111, 245, 253, 157, 245, 59, 166, 69, 228, 70, 147, 169, 133, 2, 37, 131, 50, 185, 68, 179, 172, 243, 235]

и ожидаемый результат:

000000£>Þt¸éKON}Õ06¿¡P$xµÂ9Dö5Éà@“8uØMPÒ*B»çÿ<ÍÖÞÇrxôÞ£Äô%u(Ç2ô0VVð\$÷¹    
=¢Æ
µßu.õ²ÍLG8®àdÛ%uSlbK.èÆöêPs¹D6×´:±F? 
ñºÐ=¥§¦o`»eú6Á÷0LBÍ’ûô{>ÌÍ=æBnäDÁh¿Uû䥳ÜDëS~é¯{Ïg”cñÐCê8¡3[LýHGDS¤x
°P[³Áhµéaµr¾ÿêeª&8.ÖÏÏÏ+ýÂY00?YÖPÙw^Zãªït6*FÙÌEnÁüRð¾¯t$H}n äeo+A©
y¼ÔÍÿÜÄ5êlVw¶Ðóé¡cÊZ;¯§c_Lo©¢§ìmoøôÔÝ[æ>Ôõêq©] 
êQ;1.cI¨F]o*VÿÀ&áÞDâë{4°bÕ&åsÑVC$g(Ùôáø·aÇQ,éQÿ»¨“ßQÉpð]æôìÝÞ´Ì+^¸oõýõ;¦EäF©%2¹D³¬óë

Я использовал эти функции, но без усиления

String(fullbuffer!)

второй код:

let valuesend = String(bytes: fullbuffer, encoding: String.Encoding.ascii)

я получил следующий ответ:

'000000£>\0\0\u{16}\u{b}\0\0\u{c2}\u{1}\u{c2}\ô{>\u{c2}\u{13}ÌÍ\u{11}=æBnäDÁh¿U\u{1e}ÖPÙw^Zãªït6\u{19}*FÙÌ\u{c2}\u{c2}\u{12}EnÁü\u{4}Rð¾¯t$H}n \u{16}ä\u{2}\u{c2}eo+A©\ny¼\u{c2}\u{c2}ÔÍÿÜÄ\u{1c}5êlVw\u{f}¶\u{7f}Ðó\u{3}\u{c2}é\u{c2}¡c\u{c2}ÊZ;\u{12}¯§c_L\u{c2}o\u{b}©\u{c2}¢§ì\u{1b}mo\u{c2}øôÔÝ[æ>\u{2}Ôõêq©]\u{c2} ê\u{7f}Q;1.cI¨F]\u{c2}o\u{19}*V\u{10}ÿÀ&\u{c2}áÞD\u{c2}â\u{1c}ë{\u{c2}\u{c2}4°\u{11}\u{19}\u{15}bÕ&å\u{c2}sÑVC$g(Ùô\u{c2}áø·aÇQ\u{5}\u{c2},éQÿ»¨\"ßQÉ\u{f}pð]æôìÝÞ\u{12}\u{17}\u{15}´\u{15}Ì+^\u{1b}¸oõý\u{c2}õ;¦EäF\u{c2}©\u{c2}\u{2}%\u{c2}2¹D³¬óë'

enter image description here

1 Ответ

2 голосов
/ 30 сентября 2019
let array: [UInt8] = [your data here]

if let output = String(bytes: array, encoding: .ascii) {
    print(output)
}

Сработало для меня, попробуйте явно объявить ваш массив как массив UInt8.

...