把一個文件的16進制碼轉換成倒序?

有一個未知檔案,用16進制編輯器一開始看不出個所以然,後來發現是一個16進制碼的順序完全顛倒的PNG圖檔,這樣的檔案有很多個,有辦法寫一個程式批次轉換這些檔案嗎?

PS. 倒序的意思是例如 83 AC 00 77 53 B2 轉換為 B2 53 77 00 AC 83。

更新:

1.檔案大小最大的有1.多Mb,也就是至少能承受一百多萬byte吧。

2.我用過的只有VB,如果可以跟我說一下操作方法的話其他與語言也可以,你用的這個是甚麼呢?

1 個解答

評分
  • 1 月前
    最愛解答

    因為第一個輸出是最後的一個輸入,這就表示所有的輸入一定要一次都讀進來.

    1. 你的輸入檔案,有最大的極限嗎? 以下是我沒有極限的寫法.

    2. 要用什麼語言呢?我用C.

    #include<stdio.h> 

    #include<stdlib.h> 

    typedef struct { BUF *nxt; int length; char buff[1024]; } BUF;

    int main(){

     int c, i, j;

     BUF *head, *tmp;

     FILE *inFile;

     for(head = nullptr, inFile=fopen("input","r"); inFile && EOF != (c = getc(inFile)); ){  

       if(nullptr == head || head->length >= sizeof(head->buff)){

         tmp = calloc(1, sizeof(*tmp));

         if(nullptr == tmp) return 1;

         tmp.nxt = head, head = tmp, head->length = 0;

       }

       head->buff[head->length++] = c;

     } // done reading! now reverse the output.

     for(;nullptr != (tmp = head);head = head->nxt){

     for(;0 <= --tmp->length;) putchar(tmp->buff[tmp->length]);

     free(tmp), tmp = nullptr;

     }

     return 0; 

    }

還有問題嗎?立即提問即可得到解答。