Base64EncodedStringFromData

Base64EncodedStringFromData

我将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")

它将为第一个语句打印“相同”,为第二个语句打印“不相同”。

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

07-25 21:23