[英]Swift Invalid Base64 - String Concatenation
所有,
这是一个两部分的问题...
首先,我尝试对图像进行64位编码:
var finalMessage = "";
if(imageBytes != nil && imageBytes.length > 0){
finalMessage += " <image>";
finalMessage += imageBytes!.base64EncodedStringWithOptions(nil);
finalMessage += "</image>";
}
当我在最后一个串联设置器之后调试并检查finalMessage
,将其作为调试器中的值:
"\U0000fffc <image>/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAF3KADAAQAAAABAAAD6QAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgD6QXcAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAFhYWFhYWJhYWJjYmJiY2STY2NjZJXElJSUlJXG9cXFxcXFxvb29vb29vb4aGhoaGhpycnJycr6+vr6+vr6+vr//bAEMBGx0dLSktTCkpTLd8Zny3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t//dAAQ"
这是一个很长的代码,因此请向右滚动直到上面的代码的第6行中没有</image>
标签。 很奇怪....
那么,base 64编码是否有大小限制? 对这里可能发生的事情有任何想法吗?
谢谢!
除可用内存外,对Base64编码的字符串没有大小限制。 特别是没有理由为什么在
finalMessage += imageBytes!.base64EncodedStringWithOptions(nil);
finalMessage += "</image>";
应该什么都不做。 但是调试器可能会限制输出(可能是64K?),因此如果有疑问,请使用NSLog()
或println()
。
var finalString = ""
let screenshot = UIImage(named: "screen")
let screenshotData = UIImagePNGRepresentation(screenshot)
let screenshotBase64 = screenshotData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength) as NSString
if (screenshotBase64 != "") {
let tempString = screenshotBase64.stringByAppendingString("</image>")
finalString = "<image>\(tempString)"
}
println(finalString)
将“屏幕”替换为您的图像名称,然后检查是否可行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.