私のC ++の知識は臭いです。Apple から提供されたコードを持っていますが、通常は不完全なソリューションを提供していました。
このコードでは、2 つの空のメソッド ヘッダーが提供されます。
- (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length
- (NSString *)decodeBase64:(NSString *)input length:(NSInteger *)length
理論的には、これらのメソッドは 2 つの C++ スタイルの関数を呼び出す必要がありますが、私の C++ の知識では無限の 2 乗に 1 を足したものではないため、??? を埋めてください。
- (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length
{
// I need to call base64_encode and return its results as string... is this correct?
return [NSString stringWithUTF8String:
base64_encode(input, ???)];
// ??? I need to pass a NSInteger to a size_t... how do I do that?
}
- (NSString *)decodeBase64:(NSString *)input length:(NSInteger *)length
{
// ??? = this method receives a NSInteger *length variable. How do I pass that
// to a size_t * variable required by base64_decode?
NSString *st = [[NSString alloc] initWithBytes:
base64_decode([input UTF8String], ???)
length:&length
encoding: NSUTF8StringEncoding];
return st;
}
これらの 2 つのメソッドは、これらの C++ 関数を呼び出します
char* base64_encode(const void* buf, size_t size)
{
// bla bla bla
}
void* base64_decode(const char* s, size_t* data_len_ptr)
{
// bla bla bla
}
ありがとう。