【问题标题】:C# String[] to byte[][]C# String[] 到 byte[][]
【发布时间】:2012-10-29 10:49:27
【问题描述】:

我有一个字符串数组,需要转换为 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);     
}

【问题讨论】:

标签: c# xcode unity3d mono


【解决方案1】:

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);     
}

【讨论】:

    【解决方案2】:

    我认为你的问题只是创建数组,你应该先正确创建一个字节数组:

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

    在您当前的实现中,当您调用buffer[i] 时,您会得到一个异常,但您可以按照上面提到的稍作更改来修复它。您代码的其他部分(取决于您的编码)似乎是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2013-02-15
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多