簡體   English   中英

如何在 c++ 中僅打印 4 個字節的十六進制?

[英]How do I print only 4 bytes of hex in c++?

在此處輸入圖像描述 我正在嘗試從緩沖區乞求的偏移量 0x3c 以十六進制打印 4 個字節,但是當我運行代碼時,我得到了更多字節。 該程序讀取一個簡單的 pe 文件,該文件打印“hello world”並退出。

圖片有代碼,突出顯示的是我想要打印的,這里是文本中的代碼。

int main(int argc, char* argv[]) {
pFile = fopen("hello.exe", "r");

//get file size
fseek(pFile, 0, SEEK_END);
long lSize = ftell(pFile);
rewind(pFile);

//alloc memory
buffer = (char *) malloc(sizeof(char) * lSize);

//read file to memory
auto result = fread(buffer, 1, lSize, pFile);

auto e_lfanew = (unsigned char *) malloc(1);
fseek(pFile, 0x3c, SEEK_SET);
fread(e_lfanew, 0x1, 0x4, pFile);
for(size_t i=0; i<lSize; i++){
    std::cout << std::hex << (int)e_lfanew[i];
}

return 0;

}

您的循環正在循環文件大小(lSize),如果要打印 4 個字節,請將其替換為 4。

for(size_t i=0; i<lSize; i++){
    std::cout << std::hex << (int)e_lfanew[i];
}

我看到了其他沒有真正意義的問題,為什么你只在這里分配 1 個字節(然后訪問更多又名:e_lfanew[i])

auto e_lfanew = (unsigned char *) malloc(1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM