gpt4 book ai didi

ios - Swift 3 编译器错误 : 'bytes' is unavailable: use withUnsafeBytes instead

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:26:13 27 4
gpt4 key购买 nike

我在 Swift 2.2 中有一个加密方法。如何从 Swift 3 中的数据中获取字节?

这是我的代码:

func myEncrypt(encryptData:String) -> String? {

//security key must be 24charachters
let myKeyData : Data = "*******".data(using: String.Encoding.utf8)!
let myRawData : Data = encryptData.data(using: String.Encoding.utf8)!
let mykeydatamd5 = Data(bytes: myKeyData.bytes, count: 24)
let Crypto_status: CCCryptorStatus = CCCrypt(operation, algoritm, options, mykeydatamd5.bytes , keyLength, nil, myRawData.bytes, myRawData.count, buffer, buffer_size, &num_bytes_encrypted)

if UInt32(Crypto_status) == UInt32(kCCSuccess){

let myResult: Data = Data(bytes: buffer, count: num_bytes_encrypted)
free(buffer)

return myResult.base64EncodedString()

}else{

free(buffer)
return nil

}
}

错误发生在myKeyData.bytesmyRawData.bytes中。

最佳答案

如错误信息所示,您需要改用withUnsafeBytes

一般来说,如果你有这样的表达方式:

let result = someFunc(..., data.bytes, ...)

您需要将其重写为:

let result = data.withUnsafeBytes {dataBytes in
someFunc(..., dataBytes, ...)
}

如果您在单个表达式中使用多个.bytes,您可能需要使用嵌套的withUnsafeBytes。在您的情况下,您的代码的相关部分应该是这样的:

let mykeydatamd5 = myKeyData.subdata(in: 0..<24)    //Assuming myKeyData.count >= 24

let crypto_status: CCCryptorStatus = mykeydatamd5.withUnsafeBytes {mykeydataBytes in
myRawData.withUnsafeBytes {myRawDataBytes in
CCCrypt(operation, algoritm, options, mykeydataBytes, keyLength, nil, myRawDataBytes, myRawData.count, buffer, buffer_size, &num_bytes_encrypted)
}
}

关于ios - Swift 3 编译器错误 : 'bytes' is unavailable: use withUnsafeBytes instead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41236587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com