【问题标题】:bytes convert to string swift (or swift2)字节转换为字符串 swift (或 swift2)
【发布时间】: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 个字符。

标签: swift swift2


【解决方案1】:

试试这个

(str=String(bytes: d, encoding: NSUTF8StringEncoding))

【讨论】:

  • 这是在哪里定义的?
【解决方案2】:

如果输入数据不代表 utf8 编码字符串 NSString 构造函数失败并返回 nil。如果你解开 nil 值,结果是运行时错误。

NSString(data: NSData(bytes: array, length: array.count), encoding: NSUTF8StringEncoding)!

确切地说,数组bytes: [UInt8] 不能表示为 uft8 字符串。如果我理解,你会玩一些加密框架。您确定该框架可以正确加密、解密吗?先做一些测试...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多