繁体   English   中英

Swift无效的Base64-字符串串联

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM