AS3ByteArray
をに変換する方法はwchar_t const* filename
?
したがって、私のCコードには、void fun (wchar_t const* filename)
その関数に送信する方法を含むファイルを待機している関数がありByteArray
ます。(または、関数をどのように書き直す必要がありますか?)
AS3ByteArray
をに変換する方法はwchar_t const* filename
?
したがって、私のCコードには、void fun (wchar_t const* filename)
その関数に送信する方法を含むファイルを待機している関数がありByteArray
ます。(または、関数をどのように書き直す必要がありますか?)
生後4か月の質問。遅くなるよりはましですか?
AS3でByteArrayを文字列に変換するには、文字列の保存方法に応じて2つの方法があります。まず、使用する場合は、最初に文字列の長さを表すwriteUTF
ものを書き込みunsigned short
、次に文字列データを書き出します。文字列は、この方法で復元するのが最も簡単です。AS3での実行方法は次のとおりです。
byteArray.position = 0;
var str:String = byteArray.readUTF();
または、toString
この場合も機能します。保存する2番目の方法はを使用することwriteUTFBytes
です。これは最初に長さを書き込まないので、何らかの方法で独立して追跡する必要があります。ByteArray全体を単一の文字列にしたいようですので、ByteArrayのを使用できますlength
。
byteArray.position = 0;
var str:String = byteArray.readUTFBytes(byteArray.length);
Alchemyでこれを実行したいので、上記のコードを変換する必要があります。2番目の例の変換は次のとおりです。
std::string batostr(AS3_Val byteArray) {
AS3_SetS(byteArray, "position", AS3_Int(0));
return AS3_StringValue(AS3_CallS("readUTFBytes", byteArray,
AS3_Array("AS3ValType", AS3_GetS(byteArray, "length")) ));
}
もちろん、私はAS3_Release
どこにも電話をかけていないので、これにはばかげた量のメモリリークがあります。AS3_Val
私は自分のコードでRAIIラッパーを使用しています...私の正気のために。あなたもそうすべきです。
とにかく、std::string
私の関数が返すのはUTF-8マルチバイトになります。ワイド文字に変換するための標準のC++手法は、ここから機能するはずです。(サイトで無限の再投稿を検索してください)ただし、そのままにしておくことをお勧めします。このプラットフォームでワイド文字を使用することの利点は考えられません。