I am trying to NSLog
the number of megs my NSData
object is however currently all I can get is bytes by using
NSLog(@"%u", myData.length);
So how would I change this NSLog
statement so I can see something like
2.00 megs
any help would be appreciated.
NSData provides methods for atomically saving their contents to a file, which guarantee that the data is either saved in its entirety, or it fails completely. An atomic write first writes the data to a temporary file and then, only if this write succeeds, moves the temporary file to its final location.
An object representing a dynamic byte buffer in memory.
There are 1024 bytes in a kilobyte and 1024 kilobytes in a megabyte, so...
NSLog(@"File size is : %.2f MB",(float)myData.length/1024.0f/1024.0f);
Mind you, this is a simplistic approach that couldn't really properly accommodate for byte sizes below 1,048,576 bytes or above 1,073,741,823 bytes. For a more complete solution that can handle varying file sizes, see: ObjC/Cocoa class for converting size to human-readable string?
Or for OS X 10.8+ and iOS 6+
NSLog(@"%@", [[NSByteCountFormatter new] stringFromByteCount:data.length]);
In Swift:
print(ByteCountFormatter().string(fromByteCount: Int64(data.count)))
For Swift 3, in Mb:
let countBytes = ByteCountFormatter() countBytes.allowedUnits = [.useMB] countBytes.countStyle = .file let fileSize = countBytes.string(fromByteCount: Int64(dataToMeasure!.count)) print("File size: \(fileSize)")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With