C#Array.Value与c中创建的数组不同
发布时间:2020-12-16 05:07:01 所属栏目:百科 来源:网络整理
导读:在C#中处理以下情况的最佳方法是什么? 我有一个用C/C++编写的服务器应用程序. 例如 它创建一个长度为256的unsigned char缓冲区. 在此缓冲区中,服务器存储客户端发送给它的数据.存储后,对接收的缓冲区进行一些加密检查. 我正在用C#为这台服务器编写一个客户
在C#中处理以下情况的最佳方法是什么?
我有一个用C/C++编写的服务器应用程序. 例如 我正在用C#为这台服务器编写一个客户端. 问题是服务器期望固定长度为256的缓冲区. 当我创建一个内容和总长度为256的byte []数组时,加密检查失败. 我发现的原因很简单.服务器需要256字节长的缓冲区.例如,如果消息是“Hello World”,则缓冲区的其余部分必须为0填充. 我认为这是一个C/C++概念问题. 为了解决我的问题,我明确地设置了该值. public static byte[] GetCBuffer(this byte[] data,int len) { byte[] tmp = new byte[len]; for(int i = 0; i < len; i++) if(i < data.Length) tmp[i] = data[i]; else tmp[i] = 204; return tmp; } 是否有更好的方法来处理这些艺术预期的字节?我没有看到必要的东西吗? 解决方法
如果您不喜欢在代码中,可以尝试LINQ:
public static byte[] GetCBuffer(this byte[] data,int len) { byte[] tmp = Enumerable.Repeat((byte)204,len).ToArray(); for(int i = 0; i < data.Length; i++) { tmp[i] = data[i]; } return ret; } 但从概念上讲,它是相同的,只是看起来(可以说)更好一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |