를 저장하는 방법 내가 바이너리 직렬화 네트워크 패킷을 수신하는 프로그램이 있습니다. 현재 포인터를 사용하여 바이트 배열에서 구조체로 직접 데이터를 저장하는 방법이 있습니다. 하지만 지금 필요한 것은 바이트 배열에서 복사하는 쉬운 방법을 유지하면서 UTF 문자열을 구조체에 저장하는 방법입니다. 문자열에는 문자열의 길이 (바이트)를 나타내는 부호없는 short가 접두사로 간주됩니다. 이 C# 내부적으로 char [] 또는 문자열을 저장하는 방법 또는 그것을 저장할 자체 구조체를 만들어야합니까?길이 접두사 문자열
나의 현재 구조체 레이아웃은 다음과 같이이다 :
public struct GenericPacket
{
public short packetid;
public static GenericPacket ReadUsingPointer(byte[] data)
{
unsafe
{
fixed (byte* packet = &data[0])
{
return *(GenericPacket*)packet;
}
}
}
}
읽기 사용하여 포인터는 단순히 바이트 배열을하고 그것에 만 GenericStruct로 포인터를 반환한다. 이것은 모든 일반 유형에 대해 작동하지만 문자열은 더 복잡합니다.
아이디어를 제공해 주셔서 감사합니다.
따라서, 접두사는 더 뜻 이죠 ... 바이트입니다! – jduncanator