在 C# 中处理以下情况的最佳方法是什么?
我有一个用 C/C++ 编写的服务器应用程序。
例如,它创建一个unsigned char
长度为的缓冲区256
。在这个缓冲区中,服务器存储客户端发送给它的数据。存储后,对接收到的缓冲区进行一些密码学检查。
我正在用 C# 为这个服务器编写一个客户端。
问题是服务器期望的固定长度为 256 的缓冲区。
当我创建一个byte[]
内容和总长度为 256 的数组时,密码检查失败。
我发现的原因很简单。服务器需要一个 256 字节长的缓冲区。例如,如果消息是"Hello World"
,则缓冲区的其余部分必须填充为 0。或者,更好地解释:字节需要是(unsigned) "204"
or (signed) "-52"
。
我认为这是一个 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;
}
有没有更好的方法来处理这些艺术预期字节?我没有看到重要的东西吗?