У меня есть код ac #, который кодирует строку.Я пытаюсь написать соответствующую процедуру в цели c.
Код выглядит следующим образом:
// c# code
public static string Encode(Guid guid)
{
string encode = convert.ToBase64String(guid.ToByteArray());
encode = encoded.Replace("/","_").Replace("+","-");
return encoded.substring(0,22);
}
Я написал этот код в цели c.
- (NSString *)encode:(NSString *)inId
{
NSString *uniqueId = inId;
// convert user id in to data
NSData *userIdData = [uniqueId dataUsingEncoding:NSUTF16StringEncoding];
// convert encoded userId's data into base64EncodedString
NSString *base64String = [Base64 encode:userIdData];
//NSString *base64String = [userIdData encodeBase64ForData];
NSString *encodedId = [[NSString alloc] initWithString:base64String];
// replace "/" character in base64String into "_" character
encodedId = [encodedId stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
// replace "+" character in base64String into "-" character
encodedId = [encodedId stringByReplacingOccurrencesOfString:@"+" withString:@"-"];
// get substring of range 22
encodedId = [encodedId substringToIndex:22];
NSLog(@"Base 64 encoded = %@",encodedId);
return encodedId;
}
Я вызываю эту функцию из viewDidLoad
NSString *encodedStr = [self encode:@"a8f9f344-d14e-4541-a8e7-0f5936e42254"];// string to encode
NSLog(@"Encoded String %@",encodedStr);
этот код не дает мне правильный результат, который я хочу получить, например: для строки a8f9f344-d14e-4541-a8e7-0f5936e42254 он должен давать результат как RPP5qE7RQUWo5w9ZNuQiVA.
Спасибо.