2012-12-10 13 views
31

मैं NSLog को megs की संख्या कोशिश कर रहा हूँ मेरी NSData वस्तु हालांकि वर्तमान में सभी मैं प्राप्त कर सकते हैं बाइट्स है बाइट्स से NSData लंबाई परिवर्तित कैसे मैं इस NSLog बयान मैं इतना बदल जाएगा</p> <pre><code>NSLog(@"%u", myData.length); </code></pre> <p>तो का उपयोग करके megs

2.00 megs

किसी भी मदद की सराहना की जाएगी की तरह कुछ देख सकते हैं।

+0

मैं इसे कैसे प्रारूपित करूंगा ताकि यह उसके बाद दो दशमलव स्थानों के साथ दिखाई दे। – HurkNburkS

उत्तर

111

एक किलोबाइट में 1024 बाइट्स और एक मेगाबाइट में 1024 किलोबाइट, इसलिए ...

NSLog(@"File size is : %.2f MB",(float)myData.length/1024.0f/1024.0f); 

मन कर रहे हैं आप, यह एक साधारण दृष्टिकोण है कि वास्तव में ठीक से 1,048,576 बाइट नीचे बाइट आकार के लिए समायोजित नहीं कर सकता है या 1,073,741,823 बाइट्स से ऊपर। एक और अधिक पूर्ण समाधान है कि अलग-अलग फ़ाइल आकार संभाल कर सकते हैं के लिए देखें: ObjC/Cocoa class for converting size to human-readable string?

या स्विफ्ट में ओएस एक्स 10.8+ और iOS 6+

NSLog(@"%@", [[NSByteCountFormatter new] stringFromByteCount:data.length]); 

के लिए:

print(ByteCountFormatter().string(fromByteCount: Int64(data.count))) 
+1

कूल, धन्यवाद कि एक गुच्छा काम किया .. मैं उलझन में सोच रहा था कि मुझे ब्रैकेट आदि होना है, लेकिन यह पूरी तरह से काम किया! :) – HurkNburkS

+1

यदि आपको उपयोगकर्ता को यह दिखाने की ज़रूरत है तो स्ट्रिंग प्रारूप का उपयोग न करें। इसके बजाय, NSNumberFormatter का उपयोग करें। यह उपयोगकर्ता के लोकेल के लिए प्रारूपित होगा। – rmaddy

+0

त्वरित और हाथ। यह सहायक था – Alix

13

स्विफ्ट 3 के लिए, एमबी में:

let countBytes = ByteCountFormatter() 
countBytes.allowedUnits = [.useMB] 
countBytes.countStyle = .file 
let fileSize = countBytes.string(fromByteCount: Int64(dataToMeasure!.count)) 

print("File size: \(fileSize)") 
संबंधित मुद्दे