C# C字符串[]到字节[][]

C# C字符串[]到字节[][],c#,xcode,unity3d,mono,C#,Xcode,Unity3d,Mono,我有一个字符串数组,我需要转换成字节[],以便用C中的Unity脚本连接Xcode 这是Xcode中的函数: void doThisC(char** matrix); 在C的统一中,这就是我所拥有的,但我无法使它工作: public static void doThis(string[] array, int size){ char[][] grid = new char[][] { new char[size] , new char[100]}; byte[][] buff

我有一个字符串数组,我需要转换成字节[],以便用C中的Unity脚本连接Xcode

这是Xcode中的函数:

void doThisC(char** matrix);
在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);     
}

我认为您的问题在于数组创建,您应该首先正确创建字节数组:

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

在您当前的实现中,当您调用buffer[i]时,您将得到一个异常,但是您可以像上面提到的那样进行少量更改来修复它。根据编码的不同,代码的其他部分似乎是正确的。

我认为您的问题在于数组创建,您应该首先正确创建字节数组:

byte[][] buffer = new byte[size][];
在您当前的实现中,当您调用buffer[i]时,您将得到一个异常,但是您可以像上面提到的那样进行少量更改来修复它。取决于编码的代码的其他部分似乎是正确的。

网格数组只有两项,因此代码最多只能处理两个字符串。您根本不需要网格阵列。此外,不创建阵列缓冲区:

网格数组只有两个项,因此代码最多只能处理两个字符串。您根本不需要网格阵列。此外,不创建阵列缓冲区:


unity标签用于Microsoft unity。请不要误用。unity标签是针对Microsoft unity的。请不要误用它。
public static void doThis(string[] array){
   byte[][] buffer = array.Select(System.Text.Encoding.UTF8.GetBytes).ToArray();
   doThisC(buffer);     
}