web-dev-qa-db-ja.com

NSData Lengthをバイトからメガに変換します

私はNSLog私のNSDataオブジェクトのメグの数をしようとしていますが、現在入手できるのは、

NSLog(@"%u", myData.length);

それで、このNSLogステートメントをどのように変更して、

2.00メガ

任意の助けをいただければ幸いです。

36
HurkNburkS

キロバイトには10​​24バイト、メガバイトには10​​24キロバイトがあるため、...

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

念のため、これは単純なアプローチであり、1,048,576バイト未満または1,073,741,823バイトを超えるバイトサイズに適切に対応できませんでした。さまざまなファイルサイズを処理できるより完全なソリューションについては、以下を参照してください。 サイズを人間が読み取れる文字列に変換するためのObjC/Cocoaクラス?

または、OS X 10.8+およびiOS 6+の場合

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

Swiftの場合:

print(ByteCountFormatter().string(fromByteCount: Int64(data.count)))
118
Mick MacCallum

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)")
15
Ber.to

Swift 5.1およびiOS 13では、次の5つの方法のいずれかを使用して問題を解決できます。


#1。 ByteCountFormatterの-​​ string(fromByteCount:countStyle:) クラスメソッドの使用

次のサンプルコードは、バイトサイズをより適切なストレージユニット(メガバイトなど)に変換することでautomaticallyでファイルサイズを印刷するためにstring(fromByteCount:countStyle:)を実装する方法を示しています。

_import Foundation

let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)

let byteCount = data.count
print(byteCount) // prints: 2636725

let displaySize = ByteCountFormatter.string(fromByteCount: Int64(byteCount), countStyle: .file)
print(displaySize) // prints: 2.6 MB
_

#2。 ByteCountFormatterの-​​ string(fromByteCount:) メソッドを使用する

次のサンプルコードは、ByteCountFormatterstring(fromByteCount:)を実装して、manuallyバイトをメガバイトに変換することでファイルサイズを出力する方法を示しています。

_import Foundation

let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)

let byteCount = data.count
print(byteCount) // prints: 2636725

let formatter = ByteCountFormatter()
formatter.allowedUnits = [.useMB]
formatter.countStyle = .file
let displaySize = formatter.string(fromByteCount: Int64(byteCount))
print(displaySize) // prints: 2.6 MB
_

#3。 ByteCountFormatterの-​​ string(from:countStyle:) クラスメソッドとMeasurementの使用

次のサンプルコードは、バイトサイズをより適切なストレージユニット(メガバイトなど)に変換することでautomaticallyでファイルサイズを印刷するためにstring(from:countStyle:)を実装する方法を示しています。

_import Foundation

let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)

let byteCount = data.count
print(byteCount) // prints: 2636725

let byteSize = Measurement(value: Double(byteCount), unit: UnitInformationStorage.bytes)
let displaySize = ByteCountFormatter.string(from: byteSize, countStyle: .file)
print(displaySize) // prints: 2.6 MB
_

#4。 ByteCountFormatterの-​​ string(from:) メソッドとMeasurementの使用

次のサンプルコードは、手動バイトをメガバイトに変換することでファイルサイズを出力するために、ByteCountFormatterstring(from:)およびMeasurementを実装する方法を示しています。

_import Foundation

let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)

let byteCount = data.count
print(byteCount) // prints: 2636725

let byteSize = Measurement(value: Double(byteCount), unit: UnitInformationStorage.bytes)
let formatter = ByteCountFormatter()
formatter.allowedUnits = [.useMB]
formatter.countStyle = .file
let displaySize = formatter.string(from: byteSize)
print(displaySize) // prints: 2.6 MB
_

#5。 MeasurementFormatterの-​​ string(from:) メソッドとMeasurementの使用

次のサンプルコードは、MeasurementMeasurementFormatterstring(from:)を実装して、manuallyバイトをメガバイトに変換することでファイルサイズを出力する方法を示しています。

_import Foundation

let url = Bundle.main.url(forResource: "image", withExtension: "png")!
let data = try! Data(contentsOf: url)

let byteCount = data.count
print(byteCount) // prints: 2636725

let byteSize = Measurement(value: Double(byteCount), unit: UnitInformationStorage.bytes)
let convertedSize = byteSize.converted(to: .megabytes)
let formatter = MeasurementFormatter()
let displaySize = formatter.string(from: convertedSize)
print(displaySize) // prints: 2.637 MB
_
0
Imanou Petit