我们知道,VC里的二维数据是连续存放的,可以直接将整个buffer发送给通讯的远端。
但是C#是变长数组,特别是二维数组,需要转换成一维byte[]则相当困难了。
经过研究,得到了如下的代码,并测试通过!
byte[] Array2Bytes(int[,] array){byte[] bytes = new byte[4 * array.GetLength(0) * array.GetLength(1)];int n = 0;for (int i = 0; i < array.GetLength(0); i++)for (int j = 0; j < array.GetLength(1); j++){byte[] byInt = BitConverter.GetBytes(array[i, j]);for (int k = 0; k < 4; k++){bytes[n++] = byInt[k];}}return bytes;}private void Form1_Load(object sender, EventArgs e){int[,] arrInt = new int[3, 4];for (int i = 0; i < 3; i++)for (int j = 0; j < 4; j++){arrInt[i, j] = (i + 1) * (j + 1);}byte[] bytes = Array2Bytes(arrInt);File.WriteAllBytes("d:\test.bin", bytes);}
#include <stdio.h>int _tmain(int argc, _TCHAR* argv[])
{FILE *fp = fopen("d:\test.bin","rb");int arr[3][4];fread( arr,3*4*4,1,fp);for(int i=0;i<3;i++)for(int j=0;j<4;j++){//ASSERT( (i+1)*(j+1)==arr[i][j] );}return 0;}
本文发布于:2024-02-01 21:42:17,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679493739595.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |