আইওএস 7+ এ বেস 64 ডিকোডিং


184

আমি ক্লাস নতুন এপিআই NSStringব্যবহার করে এনকোডযুক্ত পাঠ্য পেয়েছি যা আইওএস 7 NSDataএ যুক্ত হয়েছে।

এটি ব্যবহার করে

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding;  

এখানে আমার কোড

NSString *base64EncodedString = [[myText dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0];

NSLog(@"%@", base64EncodedString);

আমি এটি ডিকোড করতে খুঁজছি


7
m_EncodeText: দয়া করে থামুন
কার্ল ভিজে

1
আপনি কোথায় খুঁজে পেয়েছেন base64EncodedStringWithOptions:?
ব্যবহারকারী 2159978

@ user2159978 এটা আপেল ডক্সে আছে developer.apple.com/library/ios/documentation/cocoa/reference/...
সন্দীপ Khade

মনে হয় যখন আমি ম্যাক ওএস কনসোল অ্যাপ্লিকেশন লক্ষ্য ব্যবহার করি তখন এটি ঘটে। অথবা
sdk

উত্তর:


438

সুইফট 3+

let plainString = "foo"

এনকোডিং

let plainData = plainString.data(using: .utf8)
let base64String = plainData?.base64EncodedString()
print(base64String!) // Zm9v

গঠনের কথা মাথায় রেখে

if let decodedData = Data(base64Encoded: base64String!),
   let decodedString = String(data: decodedData, encoding: .utf8) {
  print(decodedString) // foo
}

সুইফট <3

let plainString = "foo"

এনকোডিং

let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(base64String!) // Zm9v

গঠনের কথা মাথায় রেখে

let decodedData = NSData(base64EncodedString: base64String!, options: NSDataBase64DecodingOptions(rawValue: 0))
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)
print(decodedString) // foo

উদ্দেশ্য গ

NSString *plainString = @"foo";

এনকোডিং

NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainData base64EncodedStringWithOptions:0];
NSLog(@"%@", base64String); // Zm9v

গঠনের কথা মাথায় রেখে

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


1
আমি মনে করি না এই কোডটি পরিষ্কার। আমি সতর্কতাটি পেয়েছি: "বেমানান পয়েন্টার প্রকারগুলি এনএসডিটার সাথে এনএসডিটা প্রকাশ করে"
ড্র্লোবো

9
@ ড্র্লো আপনি অবশ্যই বেস 64 টাইপ করতে হবে এনকোডড ডেটা উইথঅপশন: বেস 64 এর পরিবর্তে এনকোডড স্ট্রিং উইথঅ্যাপশনগুলি:
বাচ

4
এর জন্য ধন্যবাদ. আমি সবেমাত্র কিছু খুঁজে পেয়েছি: একটি ধ্রুবক kNilOptions0 এর সমান যা বিকল্পগুলির জন্য 0 ব্যবহার করার চেয়ে তর্কযোগ্যভাবে বেশি পঠনযোগ্য।
অ্যাডাম ওয়েট

2
@ অ্যাডামওয়েট kNilOptionsসংজ্ঞায়িত করা হয়েছে MacTypes.hযা লিগ্যাসি ওএসএক্স শিরোলেখ, তাই আমি এটি ব্যবহার করা পছন্দ করি না, যেহেতু আমি মনে করি যে হেডারটি পুরোপুরি আইওএস এসডিকে থেকে অপসারণ করা উচিত। যাইহোক, আপনার বক্তব্যটি খুব পঠনযোগ্য, তাই এটি ব্যবহার করতে নির্দ্বিধায়।
গ্যাব্রিয়েল পেট্রোনেলা

2
যদি কেউ নীল পেতে চেষ্টা করে তবে NSDataBase64DecodingOptions.IgnoreUnknownCharactersআমার এই সমস্যাটি ছিল
SpaceMonkey

81

আপনি যদি ফ্যালব্যাক কোডটি লিখতে চান তবে বেস64 থেকে ডিকোডিং প্রথম থেকেই আইওএস-এ উপস্থিত রয়েছে যার সাবধানতা অবলম্বন করে NSURL:

NSURL *URL = [NSURL URLWithString:
      [NSString stringWithFormat:@"data:application/octet-stream;base64,%@",
           base64String]];

return [NSData dataWithContentsOfURL:URL];

12
আমি এই উত্তরটি দিয়ে পুরোপুরি মুগ্ধ। কয়েক বছর ধরে আমি স্ট্রিংকে ডিকোড করতে কিছু হাস্যকর কোড ব্যবহার করছি এবং এর সাথে দুটি লাইন সমাধান ছিল।
আলবিবি

এটা সত্যিই দারুন! Hacky কিন্তু সন্ত্রস্ত :)
Micha Mazaheri

আমি কখনই ভাবিনি এত সহজ! ধন্যবাদ !!
কুমার সি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.