1

我有一个需要转换为 byte[][] 的字符串数组(将 Xcode 与 C# 中的 Unity 脚本连接起来)。

这是 Xcode 中的函数:

void doThisC(char** matrix);

在 C# 中的 Unity 中,这就是我所拥有的,但我无法使其工作:

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

grid数组只有两个项目,因此代码最多只能处理两个字符串。你根本不需要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 回答