当前位置: 首页 > 知识库问答 >
问题:

ObjC Base64解码返回零

於功
2023-03-14

我正在尝试解码一个Base64编码的字符串,而当使用UTF8编码时,它总是返回nil。我尝试将字符编码更改为几种不同的选项,但无法使其返回与将其放入https://www.base64decode.org/这样的网站时相同的值

我尝试解码的字符串是“qc6msdfm1pizbp0szoqmoq==”

下面是我用来测试的代码

// DataHelper.m

+(NSString*) base64Encode:(NSString*) string andEncoding:(NSStringEncoding) encoding {
  NSData *plainData = [string dataUsingEncoding:encoding];
  return [plainData base64EncodedStringWithOptions:kNilOptions];
}

+(NSString*) base64Decode:(NSString*) string andEncoding:(NSStringEncoding) encoding {
  NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:string options:kNilOptions];
  NSString *str = [[NSString alloc] initWithData:decodedData encoding:encoding];
  return str;
} 


// TestCases.m
-(void) testDecodeEncodeNonce {
  NSString *nonce = @"qc6mSDfm1pizbp0szoQmoQ==";
  NSString *decoded = [DataHelper base64Decode:nonce andEncoding:NSUTF8StringEncoding];
  NSString *encoded = [DataHelper base64Encode:decoded andEncoding:NSUTF8StringEncoding];
  XCTAssertEqualObjects(nonce, encoded);
}

共有1个答案

狄侯林
2023-03-14

您的代码运行良好(请尝试以下操作:Y2HLY2SGAXQGB3V0IG15IGVUY29KZWQGC3RYAW5NLG==)。你的问题不是代码,而是你编码的字符。您编码了InitWithBase64EncodedString无法在NSUTF8StringEncode中解码的特殊字符,请使用NSASCIIStringEncode代替它。

希望这能帮到你。

 类似资料:
  • 我正在尝试使用以下代码在Swift中将base64字符串解码为图像: 不幸的是,变量decodedData的值为nil 通过代码调试,我验证了变量encodedImageData不是零,是正确的编码图像数据(通过使用在线base64到图像转换器验证)。我的问题背后的原因可能是什么?

  • 问题内容: 我有像 由Web服务器呈现为HTML。我需要将这些字符串转换为 当前,这就是我正在做的事情(借助于jQuery): 但是我有一种不安的感觉,我做错了。我努力了 但它似乎无效,decodeURI / decodeURIComponent也无效。 还有其他更自然,更优雅的方式吗? 问题答案: 用于从JavaScript解释HTML(文本和其他形式)的一个更现代的选项是API中的HTML支持

  • 我一直在尝试在我的应用程序中实现GMAIL API,该应用程序是使用Swift5和Xcode构建的。我已经成功地检索到来自用户的电子邮件,但我无法从编码字符串中获得实际的文本。每当我尝试将这个base64编码的数据转换为普通字符串时,它都返回NIL。 这是绳子 stackoverflow的一些答案建议向string添加填充,但这也不起作用。

  • 问题内容: 我在用: 要运行终端命令,我知道可以使用try / except捕获错误,但是如何获取错误代码的值呢? 我在官方文档中发现了这一点: 但是没有给出任何例子,谷歌也没有帮助。 问题答案: 您可以从引发的异常中获取错误代码和结果。 这可以通过字段和来完成。 例如:

  • 我做了一些假设: 1.我给Mediacodec的每个输入缓冲区提供一个完整的访问单元,从00 00 00 01 09开始 2.我使用GLSurface.getholder().getsurface()从xml布局中预定义的GLSurface解码为一个表面。我不确定这是不是正确的做法。 3.字节数组包含NAL单元,我要自己拆分。但这些nal单元只有0x25、0x27、0x28、0x06和0x09类型

  • 我试图通过require($page.“.php”)传递一个页面;但是,它只是从页面返回代码。变量$page连接到products页面。代码如下所示。...索引页... 产品列表 第名称第价格 产品ORDER BY name ASC”;$Query=mysql_query($SQL);而($ROW=mysql_fetch_array($query)或die(mysql_error())){?><?