【发布时间】:2016-12-17 02:47:08
【问题描述】:
我是 swift 的新手。我有这个字节:
字节:[11, 143, 102, 88, 132, 238, 0, 156, 100, 166, 72, 98, 226, 109, 51, 196, 124, 124, 207, 252, 204, 129, 233、209、112、127、66、177、37、141、169、158、122、74、215、103、13、128、74、81、221、46、219、145、107、131、90、 246、37、212、91、237、32、138、74、147、238、40、182、158、12、124、197、17、92、24、184、44、150、127、147、161、 175、186、227、4、248、44、21、83、0]
我使用了这个代码:
let dencryptedBytes: [UInt8] = try! AES(key: UrlManager.CONNECTION_KEY, iv:UrlManager.CONNECTION_IV, blockMode: .CBC).encrypt(bytes)
结果如下:
解码字节数:[157, 29, 111, 190, 188, 31, 233, 140, 152, 67, 196, 83, 214, 238, 232, 184, 101, 149, 45, 184, 155, 85 , 184, 69, 155, 173, 196, 145, 123, 54, 238, 243, 34, 178, 190, 129, 106, 11, 26, 147, 19, 207, 204, 162, 142, 81, 6 , 24, 21, 93, 80, 134, 247, 151, 83, 79, 214, 134, 80, 222, 10, 196, 64, 247, 53, 194, 195, 207, 230, 79, 215, 134 , 87, 32, 37, 100, 82, 125, 59, 41, 235, 36, 144, 171, 64, 247, 195, 12, 115, 194, 124, 243, 109, 84, 44, 155]
但我需要将此字节转换为字符串。我找不到答案。请给我提意见。 非常感谢!
编辑:
我发现了这个:
var bytes: [UInt8] = [157, 29, 111, 190, 188, 31, 233, 140, 152, 67, 196, 83, 214, 238, 232, 184, 101, 149, 45, 184, 155, 85, 184, 69, 155, 173, 196, 145, 123, 54, 238, 243, 34, 178, 190, 129, 106, 11, 26, 147, 19, 207, 204, 162, 142, 81, 6, 24, 21, 93, 80, 134, 247, 151, 83, 79, 214, 134, 80, 222, 10, 196, 64, 247, 53, 194, 195, 207, 230, 79, 215, 134, 87, 32, 37, 100, 82, 125, 59, 41, 235, 36, 144, 171, 64, 247, 195, 12, 115, 194, 124, 243, 109, 84, 44, 155]
print(bytes2String(bytes))
func bytes2String(array:[UInt8]) -> String {
return NSString(data: NSData(bytes: array, length: array.count), encoding: NSUTF8StringEncoding)! as String
}
链接:NSData to String in Swift Issues
但它不起作用这是为什么?
错误:致命错误:在展开可选值时意外发现 nil
【问题讨论】:
-
您的字节数组包含大量不可打印的字符。你想怎么对付他们?
-
@Zoff Dino,如果将此字节转换为字符串,它将是类似json的字符串
-
29 映射到什么字符?你能展示你的预期输出吗?
-
我必须得到这样的结果:{"res":"connect","hash":"4930022e2d524cc3bdef0a7706468251","state":"complete"}
-
这是什么编码方案?第一个双引号是29,但是第二个是31,第三个是140?此外,您的数组有 96 个字节,但您预期的字符串只有 78 个字符。