【问题标题】:Decoding base64 string which is encoded in android解码在android中编码的base64字符串
【发布时间】:2018-01-27 10:07:30
【问题描述】:

我有一个字符串需要从 ios 解码,但在 Android 中使用 base64 加密。

String encoded = (Base64.encodeToString(vals, Base64.DEFAULT));

我试图在 Objective C 中解码的相同字符串我得到 nil // stringToDeccode android中编码的字符串

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:stringToDeccode options:0];
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];

//decodedString 为 nil

我用过这个网站的同样的字符串可以解码。 https://www.base64decode.org/

让我知道我做错了什么

【问题讨论】:

  • 您是否尝试将不同的选项传递给initWithBase64EncodedString 方法?
  • 字符串是什么?
  • 我建议不要使用 Base64.DEFAULT 而是“字符串编码 = (Base64.encodeToString(vals, Base64.NO_WRAP));”。这适用于 Objective-C 或 Swift 标准解码。

标签: android ios objective-c base64


【解决方案1】:

我认为您的输入文本有问题。 这是一个Android代码:

 String encoded = (Base64.encodeToString("IOS Developer".getBytes(), Base64.DEFAULT));

Android 编码的文本是SU9TIERldmVsb3Blcg==

iOS 代码:

  NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:@"SU9TIERldmVsb3Blcg==" options:0];
  NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
  NSLog(@"%@",decodedString);

【讨论】:

  • 编码文本在哪里写在这里测试一下
【解决方案2】:

对我来说它的工作原理:

// byteArray: 是你的图片

安卓:

字符串编码 = Base64.encodeToString(byteArray, Base64.DEFAULT);

iOS/Swift 4:

    if let data = Data(base64Encoded: encoded, options: .ignoreUnknownCharacters){
        return UIImage(data: data)

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2012-12-05
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多