C#Array.Value与c ++中创建的数组不同

时间:2013-11-04 18:41:37

标签: c# integer

在C#中处理以下情况的最佳方法是什么?

我有一个用C / C ++编写的服务器应用程序。

例如 它创建一个长度为unsigned char的{​​{1}}缓冲区。 在此缓冲区中,服务器存储客户端发送给它的数据。存储后,会对接收到的缓冲区进行一些加密检查。

我正在用C#编写这个服务器的客户端。

问题是服务器预期的固定长度为256的缓冲区。

当我创建一个内容和总长度为256的256数组时,加密检查失败。

我发现的原因很简单。服务器需要256字节长的缓冲区。例如,如果消息是byte[],则缓冲区的其余部分必须为0填充。 或者,更好地解释:字节需要是"Hello World"(unsigned) "204"

我认为这是一个C / C ++概念问题。

要解决我的问题,我会明确设置该值。

(signed) "-52"

有没有更好的方法来处理这些艺术预期的字节?我没有看到必要的东西吗?

2 个答案:

答案 0 :(得分:2)

如果您不喜欢代码中的if,可以尝试使用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;
}

但从概念上讲,它是相同的,只是看起来(可以说)更好一点。

答案 1 :(得分:1)

你可以&#39; memset&#39;将整个数组转换为所需的填充字符,然后插入实际数据?