回覆列表
  • 1 # 使用者3534897810443

    sed是流編輯器,流既可以是字元流也可以是二進位制流,可以針對文字字元或二進位制字元進行修改替換,可以直接修改二進位制檔案。感謝multiple1902提醒。

    我一般用sed以“迂迴”方式修改二進位制檔案,直觀些,不容易出錯:舉一個非常典型實用的sed修改二進位制檔案的應用場景:Oracle 10g的表匯出dmp檔案是一種二進位制檔案,經常需要在字符集“US7ASCII”和“ZHS16GBK”轉換,需要將US7ASCII字符集dmp檔案的“0001”字符集特徵碼改為ZHS16GBK字符集dmp檔案的“0354”字符集特徵碼,以下命令就可以用sed修改轉換:hexdump命令的作用是:將二進位制檔案轉換為文字dump檔案sed命令的作用是:將特徵碼修改替換xxd命令的作用是:將文字dump檔案轉換為二進位制檔案透過hexdump、sed、xxd命令管道組合,可以修改任何二進位制檔案,你想怎麼改就怎麼改,怎麼樣,威力大嗎?尤其是多個的二進位制檔案大批次修改,效率極高,不需要另編處理程式,也不需要使用低效的二進位制檔案編輯器。sed乍一看好像除了能替換字元其它啥也幹不了,其實威力大著呢。大批次轉換情況下,為提高效能,還可以直接修改二進位制檔案:

  • 2 # 使用者2681768447859

    由於char是有符號的,因此在使用unsigned short進行轉化的時候,也會出現問題。可以改為下面的程式碼。

    ifstream fin;

    fin.open("data_batch_1.bin",ios::binary);

    if(!fin){

    cout

    return -1;

    }

    char buffer[3073];

    fin.read(buffer,3073*sizeof(char));

    for(int i=0;i

    unsigned char tmp=(unsigned char)buffer[i];

    cout

    }

  • 中秋節和大豐收的關聯?
  • 滾燙的火鍋湯,突然喝進嘴裡導致什麼後果?