예고편으로 볼 때, 이것은 처음에는 적절한 C# 프로그램이고, 프로그래밍 경험은 주로 TES5Edit에 대한 파스칼 스크립트 작성과 관련이 있습니다. 나사로에서 두 개의 실제 프로그램을 만들었지 만, 틀린, 그들은 꽤 끔찍합니다.C# - 알려진 오프셋으로 파일에서 바이트 가져 오기
은 '나에게 현재 코드를 업로드 감수해야 : 어쨌든 http://www.mediafire.com/download/fadr8bc8d6fv7cf/WindowsFormsApplication1.7z
! 현재 내가하려고하는 것은 .dds 파일의 두 개의 특정 오프셋에서 바이트 값을 가져 오는 것입니다. x 해상도는 @ offset + 0c로 유지되며 2 바이트로 구성됩니다 (그래서 + 0c와 + 0d). y 해상도에 대한 동일 공연; @ offset +10 & +11. 여기에 결과를 업로드했습니다 : http://pastebin.com/isBKwaas
그러나 어떻게해야할지 모르겠습니다. 내가 여러 Google 검색 결과에서 해독 한 결과는 다음과 같이 나타났습니다.
public void GetDDSDimensions(string strDDSFilename, out int iSourceDDSx, out int iSourceDDSy)
{
FileStream fsSourceDDS = new FileStream(strDDSFilename, FileMode.Open, FileAccess.Read);
int iWidthOffset = 12; // 0c in hex, if byte is 00, then size is => 256, so get +0d as well
int iHeightOffset = 16; // 10 in hex, same gig as above. Get byte @ +11 if +10 is 00.
byte[] bufferDDSBytes = new byte[24]; // @ Offset +24 , byte is always 01. Use as a wee, err, "landmark".
}
단서가 없습니다. fsSourceDDS의 처음 24 바이트를 nab에 저장하고, .dds 파일의 해상도를 얻기 위해 16 진수 값을 + + 0c와 +10과 비교하는 방법으로 bufferDDSBytes를 설정해야합니다.
비교하기 쉽습니다. C#은 Pascal의 StrToInt() 함수에 해당하는 16 진수 여야합니다.
을 그래서 기본적으로 당신이 오프셋 특정 파일에서 인코딩 된'ushort' 리틀 엔디안을 읽는 방법을 요구하고있다. –
맞습니다. LE와 BE는 바이트 순서와 관련이 있습니다. LE에서 16 진수 4000은 '00 40 '으로 쓰여졌지만 BE에서는 '40 00'으로 쓰여졌습니다. 그리고 ushort는 작은 정수형 변수 인 것 같습니다. – MajinCry
수정하십시오. 실제로 데이터를 살펴보면 0xc, 0xc + 4 –