我正在使用MapViewOfFile()和SharedMemory。我能夠逐字節讀取內存內容!現在我想知道,如何將新的十六進制值設置爲特定的字節?由於我的代碼,我希望在我的第二個console.log中,十六進制值0xffc8在單元格83中。不幸的是,情況並非如此。如何設置特定字節的值?
// main method
FILE * pBuf = (FILE*) MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);
...
int d;
BYTE dbgByte;
for(d = 0; d < 86; d++){
dbgByte = *((PBYTE) pBuf + (d));
printf("DEBUG byte %i hexvalue %hhx \n", d, (char) dbgByte);
printf("DEBUG byte %i int %i \n", d, (int) dbgByte);
}
// DEBUG - END
for(d = 0; d < 86; d++){
if (d == 83){ // 0xffc8 = 200
BYTE writeByte1;
writeByte1 = *((PBYTE) pBuf + (d));
writeByte1 = 0xffc8;
}
}
// DEBUG 2 - START
for(d = 0; d < 86; d++){
dbgByte = *((PBYTE) pBuf + (d));
printf("DEBUG byte %i hexvalue %hhx \n", d, (char) dbgByte);
printf("DEBUG byte %i int %i \n", d, (int) dbgByte);
}
// DEBUG - END
...
UPDATE:試圖Bill的書於 - 不幸的是這並沒有工作,以及:
if (d == 84){ // 0x42 = 66
*((PBYTE) pBuf + (d)) = 0x42;
}
更新2:試圖隊長不經意的建議 - 不幸的是,寫程序沒有工作。我在debug-3日誌記錄語句中看不到十六進制值42。
for(d = 0; d < 86; d++){
byte = pBuf[d];
printf("DEBUG-1 ");
printf("hex: %hhx; ", byte);
printf("char: %c; ", (char) byte);
printf("dec: %i; ", (int) byte);
printf(" byte %i; ", d);
printf("\n");
if (d == 84){ // 0x42 = 66
pBuf[d] = 0x42;
printf("DEBUG-3 ");
printf("hex: %hhx; ", byte);
printf("char: %c; ", (char) byte);
printf("dec: %i; ", (int) byte);
printf(" byte %i; ", d);
printf("\n");
}
}
你打算如何將0xffc8放在一個字節中? – jwodder