2011-09-06 119 views
3

一個技巧告訴我,我可以使用bytes+""轉換成字符串,但不是一個純粹的字符串。這是任何UI組件都可以接受的,除非我將bytes+""放入switch聲明中時它不會接受。如何將bytearray轉換爲純字符串?字節數組到字符串

private function socketDataHandler(event:ProgressEvent):void { 
    try { 
     rsocket = event.target as Socket; 
     bytes = new ByteArray(); 
     rsocket.readBytes(bytes); 
     kEvent(bytes+""); 
     rsocket.flush(); 
    } catch (error:Error) { 
     Alert.show(error.message, "Error"); 
    } 
} 

回答

6

如果你的字符串是UTF8,你可以做到以下幾點:

var myString:String = bytes.readUTF(); 

您可以將文檔在這裏看到:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html

+0

轉換後得到了「#2030:遇到文件結尾」錯誤,該怎麼辦? – thunder31

+0

在這種情況下,該字符串未根據Flash Player預期的規範格式化(數組的開頭必須有一個無符號整數,表示字節數)。您可以指定字節數並使用readUTFBytes方法,否則您必須手動進行轉換。 – dtuckernet

+3

管理解決readUTFbyte(bytes.available) – thunder31

1

只需使用的toString( )方法。

var ba:ByteArray; 
var str:String = ba.toString(); 
+0

以及如何將其轉換回來? writeUTF? – Oldes