I'm encoding an image with swift using
let base64String = data!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
the first 222 character of encoded string is /9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABLKADAAQAAAABAAABLAAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ...
I encoded the same image with golang using
sEnc := base64.StdEncoding.EncodeToString(imageData)
the first 224 character of encoded string is
/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIASwBLAMBIgACEQEDEQH/xAGiAAABBQEBAQEB...
When I decode the image in swift using
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
var decodedimage = UIImage(data: decodedData!)
the image looks exactly the same.
When I decode swift generated base64 string in golang with
dec, err := base64.StdEncoding.DecodeString(imageData)
I'm getting error while decoding base64 string: illegal base64 data at input byte 220
which is the +
character. But when I decode the golang generated base64 the output correct.
Why are the encoded strings different? How can I fix it?
EDIT:
Swift last 10 bytes eqvr h/9k=
Golang last 10 bytes cvdR//2Q==
EDIT2:
In Golang I'm using ioutil for reading file
b, err := ioutil.ReadFile(fileName)
EDIT3:
Added results for a different test case https://www.dropbox.com/sh/zd1wj7ppjedrx6a/AAAoX15iztTimtav6U_8IF4Ma?dl=0