문제

나는 이것이 쉬운 질문이라고 확신하지만, 나는 대답이 없습니다. 여기 Senario와 질문이 있습니다.

특정 형식으로 사용하여 저장된 배열이 있습니다. 이 형식에는 뒤 따르는 Muntiple Detail 레코드가있는 헤더 레코드가 포함되어 있습니다. 레코드의 헤더는 데이터를 저장하는 데 사용 된 TypeCode (예 : int32)를 알려줍니다.

바이트 [] 배열을 취하고 바이트 데이터를 C#의 적절한 형식으로 다시 변환하는 루틴이 있습니다. 이 루틴은 변환을 성공적으로 만들기 위해 적절한 수의 바이트가 필요합니다.

Q. 그러면 모든 유형의 길이를 하드 코딩하지 않고 변환 함수로 전달하기 위해 주어진 TypeCode에서 바이트 길이를 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

을 고려하면 TypeCode 고정 된 값 세트의 열거 일뿐입니다. 예를 들어 사전을 쉽게 하드 코딩 할 수 있습니다.

private static readonly Dictionary<TypeCode,int> TypeCodeLength =
    new Dictionary<TypeCode,int> {
    { TypeCode.Int32, 4 },
    { TypeCode.Int64, 8 },
    { TypeCode.Char, 2 },
    // etc
}

(동등한 솔루션은 스위치/케이스 명령문을 사용하는 것입니다. 값을 포함하는 경우 실제로 동등합니다.)

일부는 좋아요 string 그리고 object 하지만 가변적이 될 것입니다. 그리고 다른 사람들은 당신이 다음과 같은 것을 인코딩하는 방법에 달려 있습니다. DateTime.

이것이 표준 변환을 사용하지 않는 한, 프레임 워크의 어느 것도 당신에게 길이를 줄 수는 없습니다. 나는 하드 코딩이 일반적으로 눈살을 찌푸 렸다는 것을 알고 있지만,이 경우에는 한 곳에 있고 가장 간단한 옵션이 될 것입니다.

다른 팁

에 따르면 typeCode에서 유형을 만드는 방법 ..., 당신은 (철저한 스위치없이) 할 수 없습니다. 물론 다른 방향 (type-> typecode)은 사소합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top