Ios 解码基64中的字符串

Ios 解码基64中的字符串,ios,iphone,objective-c,base64,Ios,Iphone,Objective C,Base64,我需要解码一个64进制的字符串。为此,我使用以下代码: // Get the base 64 string vector. NSString *vector64String = insertRequestDictionnary[@"check"]; // Decode the base 64 string into data. NSData *vector64Data = [NSData dataFromBase64String: vector64String]; // Get the stri

我需要解码一个64进制的字符串。为此,我使用以下代码:

// Get the base 64 string vector.
NSString *vector64String = insertRequestDictionnary[@"check"];
// Decode the base 64 string into data.
NSData *vector64Data = [NSData dataFromBase64String: vector64String];
// Get the string from decoded data.
NSString *decodeVector = [[NSString alloc] initWithData: vector64Data
                                               encoding: NSUTF8StringEncoding];
…但每次我得到一个nil字符串(decodeVector)。 我检查这个网站(),我的第一个字符串(vector64string)是base 64。例如:“h508ILubppN1xLpmXWLfnw==”给出了“
谢谢。

并非所有数据都是NSUTF8字符串。Base64的一点,用于创建自然不是字符串的数据的字符串表示形式

NSString *vector64String = @"h508ILubppN1xLpmXWLfnw==";
NSData *vector64Data = [[NSData alloc] initWithBase64EncodedString:vector64String options:0];
NSLog(@"vector64Data: %@", vector64Data);
NSLog输出:

矢量数据:

vector64数据
是已解码的base64字符串


Vector64数据不是UTF8字符串,它只是数据。

那么你的意思是,我将始终在末尾有一个nil字符串(decodeVector)?使用此数据是的。但是你试图做的是不正确的。你想完成什么?对Base64进行一些研究,为什么使用它,数据是什么。vector64String是一个键,用Base64编写。我只需要解码vector64String并得到nsutf8字符串。好的,我会的。数据没有NSUTF8字符串。你用钥匙干什么?在许多情况下,例如加密密钥是8位数据,通常不是字符串。您使用密钥的目的是什么?在iOS上,加密是通过CommonCrypto完成的,AES128需要128位(16字节)密钥,这就是
vector64Data
的含义。如果您在加密方面遇到问题,请询问相关问题,并提供您试图使用的代码。在这里提供一个新问题的链接,我会尽力帮助你。你能提供更多关于这个“向量”的信息吗?它是什么产生的,它的用途是什么?从这个base 64字符串中提取的
NSData
不是UTF8字符串(如果是UTF8字符串,它可能一开始就不会对base 64进行编码)。但是,如果没有一点关于原始向量是什么的上下文,就很难就如何解释生成的二进制数据提供建议。向量是一个关键。我正在尝试在iOS和PHP之间进行AESCrypt解密:服务器向我发送加密消息和密钥(vector64String)。为了解密消息,我使用了一个方法并将这个密钥作为参数。但是我首先需要解码这个密钥,它在base 64中。我不确定您在iOS端使用的是什么,但是AES crypto通常不要求密钥是字符串。看起来这是一个16字节的二进制密钥。