gpt4 book ai didi

ios - Base64EncodedStringFromData Objective-C 的新 Swift 方式

转载 作者:可可西里 更新时间:2023-11-01 02:16:58 26 4
gpt4 key购买 nike

我正在将 Objective-C 转换为 Swift,并遇到了将 Apple App Store 收据 NSData 转换为 base64 编码字符串的代码。

代码使用了来自 https://github.com/stackmob/stackmob-ios-sdk/blob/master/Utility/Base64EncodedStringFromData.m 的函数 Base64EncodedStringFromData

来自标题为 Base64 Encoding/Decoding with Swift 2 的 stackoverflow 帖子,我看到了如何编码 NSData。

let base64String = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)

但是,如果我希望结果与 Base64EncodedStringFromData 函数相同,我认为我应该改为执行以下操作:

let base64String = transactionReceipt.base64EncodedStringWithOptions([])

"Base64EncodedStringFromData" 和 transactionReceipt.base64EncodedStringWithOptions([]) 是否等价?我打算试验一下。但是,我想确保这个概念是正确的。

最佳答案

这两个是等价的吗? - 答案是否定的,但这取决于字符串的长度。

如果您查看 Apple documentation ,它明确指出,如果您不指定行长度,则编码将为回车 + 换行。

另外,我写了一个小测试来看看,因为我也是用base64编码。

 let someShortString = "someShortString"
let encodedShortString = someShortString.dataUsingEncoding(NSUTF8StringEncoding)!


let someLongString = "someLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongStringsomeLongString"
let encodedLongString = someLongString.dataUsingEncoding(NSUTF8StringEncoding)!

let base64ShortStringWithoutParameters = encodedShortString.base64EncodedStringWithOptions([])
let base64ShortStringWithParameters = encodedShortString.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)


let base64LongStringWithoutParameters = encodedLongString.base64EncodedStringWithOptions([])
let base64LongStringWithParameters = encodedLongString.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)

base64ShortStringWithoutParameters == base64ShortStringWithParameters ? print("same") : print("not same")
base64LongStringWithoutParameters == base64LongStringWithParameters ? print("same") : print("not same")

它将为第一个语句打印“same”,为第二个语句打印“not same”。

总而言之,如果您的字符串超过一定长度(可能是 64 个字符,但我不确定),它们将不相同。转换后的字符串中会插入“\r\n”。

关于ios - Base64EncodedStringFromData Objective-C 的新 Swift 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37029139/

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