簡體   English   中英

Flex ActionScript 3如何將字符串的一部分轉換為Big Endian整數?

[英]Flex ActionScript 3 How to Transform part of String to Big Endian Integer?

我目前已經嘗試過類似的方法,但是不幸的是它無法編譯。

public function processPacket(event:PacketEvent):void { 
    var packetType:int = event.packetType;
    var packetData:String = event.packetData;
    var size:int = ((((byte)packetData.charAt(0)) & 0xff) << 24) | ((((byte)packetData.charAt(1)) & 0xff) << 16) |
                   ((((byte)packetData.charAt(2)) & 0xff) << 8)  | (((byte)packetData.charAt(3)) & 0xff);

    //...
    //TODO: Retrieve String based on the size above.
    // processedSize += size;
    //Then if(packetData.length > processedSize) size = old string +1
}

我得到錯誤

C:\src\flash.mxml(111):  Error: Syntax error: expecting rightparen before packetData.

                        var size:int = ((((byte)packetData.charAt(0)) & 0xff) <<
 24) | ((((byte)packetData.charAt(1)) & 0xff) << 16) |

C:\src\flash.mxml(111):  Error: Syntax error: expecting semicolon before rightparen.

                        var size:int = ((((byte)packetData.charAt(0)) & 0xff) <<
 24) | ((((byte)packetData.charAt(1)) & 0xff) << 16) |

是否有任何功能可以同時在一行中完成此操作,也許可以通過String索引完成。

我知道我沒有使用ByteArray,這可能不會有問題。 但是在套接字中,我做這樣的事情

recvPacketData = socket.readUTFBytes(recvPacketSize);

所以我目前無法訪問任何ByteArray。

如果要將String轉換回ByteArray ,就可以編譯了,只需要像ByteArray.writeUTFBytes(String);一樣填充ByteArray ByteArray.writeUTFBytes(String);

這是我的示例,我可以像這樣進行編譯。

    public function processPacket(event:PacketEvent):void { 
        var packetType:int = event.packetType;
        var packetData:String = event.packetData;

        var packetDataBytes:ByteArray = new ByteArray();
        packetDataBytes.writeUTFBytes(packetData);

        var arguments:Array = new Array();
        var size:int = 4; //4 bytes for readInt() + 1 for possible String
        while(packetDataBytes.length > size) {
            size = packetDataBytes.readInt();
            if(size <= 0 || size > 2000000) break;
            arguments.push(packetDataBytes.readUTFBytes(size));
        }

        switch(packetType) {
            //...
        }
    }

暫無
暫無

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

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