[C#] 将二维变长数组转成 byte[]

阅读: 评论:0

[C#] 将二维变长数组转成 byte[]

[C#] 将二维变长数组转成 byte[]

我们知道,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);}

接收端C++端测试代码如下

#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小时内删除。

标签:数组   转成   变长   byte
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23