1

byte[][] に変換する必要がある文字列配列があります (Xcode を C# の Unity スクリプトに接続するため)。

これは Xcode の関数です。

void doThisC(char** matrix);

UnityのC#では、これが私が持っているものですが、機能させることができません:

public static void doThis(string[] array, int size){
    char[][] grid = new char[][] { new char[size] , new char[100]}; 
    byte[][] buffer;

   for(int i = 0 ; i < size ; i++)
   {
      grid[i] = array[i].ToString().ToCharArray();
      buffer[i] = (new System.Text.UTF8Encoding()).GetBytes(grid[i]);
   }
   doThisC(buffer);     
}
4

2 に答える 2

3

配列には2つのgrid項目しかないため、コードは2つの文字列までしか機能しません。grid配列はまったく必要ありません。また、配列を作成しませんbuffer

public static void doThis(string[] array){
   byte[][] buffer = new byte[array.Length][];
   for(int i = 0 ; i < array.Length ; i++)
   {
      buffer[i] = System.Text.Encoding.UTF8.GetBytes(array[i]);
   }
   doThisC(buffer);     
}

またはLinq拡張メソッドを使用する:

public static void doThis(string[] array){
   byte[][] buffer = array.Select(System.Text.Encoding.UTF8.GetBytes).ToArray();
   doThisC(buffer);     
}
于 2012-10-29T10:59:16.793 に答える
2

問題は配列の作成にあると思います。最初にバイト配列を適切に作成する必要があります。

byte[][] buffer = new byte[size][];

現在の実装では、呼び出すbuffer[i]と例外が発生しますが、上記のように少し変更するだけで修正できます。コードの他の部分 (エンコーディングに応じて) は正しいようです。

于 2012-10-29T10:55:12.163 に答える