2011-09-06 59 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