C#에서 다음 상황을 처리하는 가장 좋은 방법은 무엇입니까?C# Array.Value는 C++에서 만들어진 배열과 다릅니다
C/C++로 작성된 서버 응용 프로그램이 있습니다.
예 : 길이가 256
인 unsigned char
버퍼를 만듭니다. 이 버퍼에서 서버는 클라이언트가 보내는 데이터를 저장합니다. 저장 후, 수신 된 버퍼와 함께 일부 암호화 검사가 있습니다.
저는이 서버의 클라이언트를 C#으로 작성하고 있습니다. I는 콘텐츠 암호화 및 검사가 실패 (256)의 전체 길이와 byte[]
배열을 만들 때
문제는 서버 (256)
의 고정 길이로 예상되는 버퍼이다.
내가 알아 낸 이유는 간단합니다. 서버는 256 바이트 길이의 버퍼를 예상합니다. 예를 들어 메시지가 "Hello World"
인 경우 나머지 버퍼는 0으로 채워야합니다. 또는 더 자세히 설명 : 바이트는 (unsigned) "204"
또는 (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;
}
이러한 예상 바이트로 작업하는 더 좋은 방법이 있습니까? 나는 필수적인 것을 보지 못했습니까?
바이트 배열을 특정 값으로 초기화하려면이 [대답] (http://stackoverflow.com/a/6150310/2145211)을 기반으로 기본 null이 아닌 _ _ 나는 당신의 솔루션이 좋은 것이라고 말할 것입니다 . – Harrison
값을 더 일반화하고 "blank"값을 전달하므로 값이 204가 아닌 다른 값이면 다시 재사용 할 수 있습니다. –