0

Adobe AIR モバイルアプリで NFC タグを読み取っています。データは ByteArray として読み取られますが、全文を取得するのが困難です。タグのサンプル テキストは「http://www.google.com」です。

このメソッドを使用すると、文字列 "http://www.goog" の一部を取得できますが、すべてではありません。各文字が1バイトではないため、私は推測しています:

private static function convertToString(byte_array : ByteArray) : String {
        var arr : Array = [];
        for (var i : Number = 1 ; i <= byte_array.bytesAvailable; i++) {
            arr.push(byte_array.readUTFBytes(i));
        }

        var finalString : String = "";
        for (var t : Number = 0; t < arr.length;t++) {
            finalString = finalString + arr[t].toString();
        }

        return finalString;
    }

以下の方法も試しましたが、null を返します。

bytes.readUTF();

byteArray を base64 文字列に変換してからデコードする必要があるかどうか疑問に思っています。余分な手順のように思えますが、AMFPHP を使用してサーバーとの間でデータを送受信するときに以前に行った方法です。

ご意見をお寄せいただきありがとうございます。

4

2 に答える 2

1

単に呼び出すだけで、このコードを単純化することもできます

private static function convertToString(bytes:ByteArray):String {
    bytes.position = 0;
    var str:String = bytes.readUTFBytes(bytes.length);

    return str;
}

このようにして、1 回のメソッド呼び出しで bytearray のすべての内容を目的の文字列に読み込みます。

于 2012-06-14T04:35:51.687 に答える