交错数组和多维数组如何转换?

maths95 2010-06-04 10:16:31
比如:有没有办法直接把类型“byte[][*,*]”转换为“byte[*,*,*]”?有没有这样的函数??
...全文
293 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujk 2010-06-05
  • 打赏
  • 举报
回复
自己写嘛,这个很简单的
兔子-顾问 2010-06-05
  • 打赏
  • 举报
回复
byte[,] b = new byte[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
byte[] a = new byte[6];
var dest = Marshal.UnsafeAddrOfPinnedArrayElement(b, 0);
Marshal.Copy(dest, a, 0, b.Length);
兔子-顾问 2010-06-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100408/16/220edfc4-2e73-4acd-9bb4-cee63355c795.html?29339
兔子-顾问 2010-06-05
  • 打赏
  • 举报
回复
翻翻这里的精华帖。就有答案了。那个销魂头像的伴水大神回答过。
maths95 2010-06-05
  • 打赏
  • 举报
回复
改一下上面c声明为:byte[][,] c=new byte[2][,],c[0]=new byte[3,3];c[1]=new byte[3,3];
maths95 2010-06-05
  • 打赏
  • 举报
回复
长度都是固定的,比如byte[,,] b = new byte[2,3,3] 而且b里面的元素都已经赋值了。现在声明一个
byte[][,] c=new byte[2][3,3],那么有没有函数可以可以直接把b里面值的复制到c中。
兔子-顾问 2010-06-05
  • 打赏
  • 举报
回复
byte[*,*,*]?
你是不是想当然写的?定义只能这样写
byte[,,,] c = new byte[5,6,8];

这样你的秩是确定长度的。而你从一个不定长度的转换到这样的。怎么对应呢?
byte[][,] b = new byte[][,] {new byte[2,4] {{ 1, 2, 3,4 }, { 5, 6,7,8 }} };
byte[,,,] c = new byte[8,8,8];
你如何转换?
兔子-顾问 2010-06-05
  • 打赏
  • 举报
回复
你无法声明的时候就固定byte[][]的后面长度的,只能定义为byte[][,],这样每个byte[,]的长度可以是不同的。
兔子-顾问 2010-06-05
  • 打赏
  • 举报
回复
byte[][,] b = new byte[][,] {new byte[2,4] {{ 1, 2, 3,4 }, { 5, 6,7,8 }} };
这样定义?
那你长度都不固定你不自己循环还怎么弄?
maths95 2010-06-05
  • 打赏
  • 举报
回复
我本意是有没有直接用相关的函数处理,而不通过循环语句。
gs0038 2010-06-05
  • 打赏
  • 举报
回复
for几次算了,
实在不行就
maths95 2010-06-05
  • 打赏
  • 举报
回复
但上面的用法是适合于其中有个是一维数组,而我这边是三位数组和交错数组的交换!!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧