2012-05-10 5 views
0

좋아,이 시점에서 붙어있어 ... 두 파일을 비교하고 한 파일의 문자열을 다른 파일로 복사 (바꾸기)하고 싶습니다.16 진수 문자열 찾기 및 바꾸기

예제 파일 1 :

01cd74a8h: 65 00 00 00 54 45 53 54 00 00 00 00 00 00 00 00 ; e...TEST........ 
01cd74b8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd74c8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd74d8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd74e8h: 00 00 00 00 00 00 20 C5 00 00 00 00 00 00 20 C5 ; ...... ?..... ? 
01cd74f8h: 00 00 20 45 00 00 00 00 00 00 20 45 01 00 00 00 ; .. E...... E.... 
01cd7508h: 00 00 00 00 00 00 00 00 C9 00 00 00 54 61 6D 20 ; ........?..Tam 
01cd7518h: 54 61 20 51 75 61 6E 00 00 00 00 00 00 00 00 00 ; Ta Quan......... 
01cd7528h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd7538h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd7548h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 45 ; .............. E 
01cd7558h: 00 00 00 00 00 00 20 C5 00 00 F0 45 00 00 00 00 ; ...... ?.餎.... 
01cd7568h: 00 00 20 45 01 00 00 00 00 00 00 00 00 00 00 00 ; .. E............ 
01cd7578h: 2D 01 00 00 4C 69 65 75 20 43 68 69 6E 68 20 51 ; -...Lieu Chinh Q 
01cd7588h: 75 61 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 ; uan............. 
01cd7598h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd75a8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd75b8h: 00 00 00 00 00 00 F0 C5 00 00 00 00 00 00 20 C5 ; ......鹋...... ? 
01cd75c8h: 00 00 20 C5 00 00 00 00 00 00 20 45 01 00 00 00 ; .. ?..... E.... 
01cd75d8h: 00 00 00 00 00 00 00 00 91 01 00 00 56 6F 20 54 ; ........?..Vo T 
01cd75e8h: 68 69 65 6E 20 43 61 63 20 31 00 00 00 00 00 00 ; hien Cac 1...... 
01cd75f8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd7608h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01cd7618h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 C4 ; ..............H? 
01cd7628h: 00 00 00 00 00 00 48 C4 00 00 48 44 00 00 00 00 ; ......H?.HD.... 
01cd7638h: 00 00 48 44 00 00 00 00 10 CA 9A 3B 00 00 00 00 ; ..HD.....蕷;.... 

예제 파일 2 :

01b954a8h: 65 00 00 00 43 65 6E 74 72 61 6C 20 56 61 6C 6C ; e...Central Vall 
01b954b8h: 65 79 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ey.............. 
01b954c8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b954d8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b954e8h: 00 00 00 00 00 00 20 C5 00 00 00 00 00 00 20 C5 ; ...... ?..... ? 
01b954f8h: 00 00 20 45 00 00 00 00 00 00 20 45 01 00 00 00 ; .. E...... E.... 
01b95508h: 00 00 00 00 00 00 00 00 C9 00 00 00 48 69 6C 6C ; ........?..Hill 
01b95518h: 20 56 61 6C 6C 65 79 00 00 00 00 00 00 00 00 00 ; Valley......... 
01b95528h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b95538h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b95548h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 45 ; .............. E 
01b95558h: 00 00 00 00 00 00 20 C5 00 00 F0 45 00 00 00 00 ; ...... ?.餎.... 
01b95568h: 00 00 20 45 01 00 00 00 00 00 00 00 00 00 00 00 ; .. E............ 
01b95578h: 2D 01 00 00 52 69 76 65 72 73 69 64 65 20 50 6C ; -...Riverside Pl 
01b95588h: 61 69 6E 73 00 00 00 00 00 00 00 00 00 00 00 00 ; ains............ 
01b95598h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b955a8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b955b8h: 00 00 00 00 00 00 F0 C5 00 00 00 00 00 00 20 C5 ; ......鹋...... ? 
01b955c8h: 00 00 20 C5 00 00 00 00 00 00 20 45 01 00 00 00 ; .. ?..... E.... 
01b955d8h: 00 00 00 00 00 00 00 00 91 01 00 00 46 6F 72 62 ; ........?..Forb 
01b955e8h: 69 64 64 65 6E 20 54 6F 77 65 72 20 31 46 00 00 ; idden Tower 1F.. 
01b955f8h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b95608h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ 
01b95618h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 C4 ; ..............H? 
01b95628h: 00 00 00 00 00 00 48 C4 00 00 48 44 00 00 00 00 ; ......H?.HD.... 
01b95638h: 00 00 48 44 00 00 00 00 10 CA 9A 3B 00 00 00 00 ; ..HD.....蕷;.... 

내가 뭘 원하는 아이템 ID 년대의 모든 경기가 있는지, File1을 File2로 비교하고, 해당 항목이있는 경우 File2의 정보를 File1로 복사하십시오.

항목 ID는 항목 이름 뒤에 4 바이트를 시작합니다.

01b954a8h: 65 00 00 00 43 65 6E 74 72 61 6C 20 56 61 6C 6C ; e...Central Vall 
    01b954b8h: 65 79 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ey.............. 

    01b95508h: 00 00 00 00 00 00 00 00 C9 00 00 00 48 69 6C 6C ; ........?..Hill 
    01b95518h: 20 56 61 6C 6C 65 79 00 00 00 00 00 00 00 00 00 ; Valley......... 

여기서 "65 00"과 "C9 00"은 센트럴 밸리와 힐 밸리의 ID입니다.

+0

정말 못생긴 방식으로이 작업을 시도했습니다 ... 목록 상자에 항목 ID 및 이름을로드하고 비교하고 바꿉니다. 그러나 많은 메모리를 소비하고 성능이 떨어집니다. –

답변

1

나에게 이것이 왜 16 진수로 이것을하고 싶은지 명확하지 않다. 텍스트로 처리 할 수있는 것 같습니다.

내 생각에 정규식을 사용하여 공백으로 구분 된 단어를 찾고 ID 문자를 얻기 위해 몇 가지 문자를 백업해야합니다 (필요한 경우 16 진수로 변환 할 수 있음).

+0

16 진수 일 필요는 없습니다. 바이트 배열 일 수는 있지만 null 바이트 "00"은 읽지 않습니다. –

+0

@AlanAlvarez 바이트 배열을 사용하면 괜찮아요. 문자열을 사용할 수 있지만 원할 경우 문자열을 사용할 수없는 이유는 없습니다. 데이터를 메모리에로드 할 때 간단하게 문자열로 디코딩하고 다시 쓰면 인코딩 할 수 있습니다. 다시 쓸 때 null 문자로 데이터를 패딩해야합니다. –

0

목록 상자에 항목을로드하는 대신 항목을 두 개의 사전 개체에로드합니다 (여기서 정수는 항목의 ID이고 문자열은 항목의 설명입니다.) 파일 당 하나의 사전을로드 한 다음 사전을 만들려면 하나의 사전에 필요한 수정을 한 다음 파일에 다시 저장하십시오.