簡體   English   中英

Java到Objective-C-等同於readUTF()的方法?

[英]Java to Objective-C - Equivalent method to readUTF()?

是否有任何等效的方法可以從目標C中的Java中讀取readUTF()?

這是我需要轉換為目標C的代碼段:

FileInputStream in = new FileInputStream(mapfile.dat);
ObjectInputStream si = new ObjectInputStream(in);
si.readUTF();

boolean create = si.readBoolean();
si.readBoolean();
if (create) {

    si.readInt();
    si.readInt();
    si.readInt();
    si.readInt();
    int num=si.readInt();
    if (num>0) {
            for (int i=0;i<num;i++) {
                    si.readObject();
            }
            si.readInt();
    }
    num=si.readInt();
}

//.............

您要讀取的文件有多大? 如果大小適中,則可以使用以下命令:

NSString * string = [ NSString stringWithContentsOfFile:pathToFile 
                                               encoding:NSUTF8StringEncoding error:NULL ] ;

一種方法是將整個文件讀入字節數組(或NSData實例),然后遍歷數據。 當必須讀取字符串時,可以調用NSString stringWithUTF8String: ,然后跳過正確的字節數。 編碼的字符串的末尾有兩個空字節。

因此,讀取字符串可能如下所示:

 NSData* data = ...;
 const char* dataPtr = [data bytes];

 // read data and move dataPtr

 // read string
 NSString str = [NSString stringWithUTF8String: dataPtr];
 dataPtr += strlen(dataPtr) + 2;

我使用strlen是因為它不了解Unicode並只計算字節而不是字符。

如果您沒有00FFFF以上的任何代碼點,則此方法應該起作用。 如果有的話,我將需要更深入地研究Java二進制數據流使用的經過修改的UTF-8格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM