Я пытаюсь создать файл, который берет двоичные записи из указателя, но у меня возникают некоторые проблемы с преобразованием.Как создать файл с шестнадцатеричной информацией (как char) из указателя в двоичном стандарте?
Моя функция в том, что один:
pSec
указывает на первый адрес с информацией, которую я хочу написать.
int StoreFile::setK(unsigned int Slot, void* pSec, unsigned int Len) {
int Ret = 0;
char tLen[sizeof(Len)];
char cSec[Len*2], *Sec;
static char FName[fs_PathMaxLg];
snprintf(FName, sizeof(FName)-1, "%s/Store.INI", _Dir);
static char Section[2][20];
snprintf(Section[0], sizeof(Section[0])-1, "%lu_SIZE", Slot);
snprintf(Section[1], sizeof(Section[1])-1, "%lu_DATA", Slot);
do {
Здесь я пытаюсь проверить все адреса, передавая информацию в char*
, но я хочу, чтобы эта информация придет в шестнадцатеричном (массиве char
с содержанием шестнадцатеричного), но я не имея успех в передавая информацию с адреса, указанного на char
.
BYTE *ptr = (BYTE*)pSec;
for (int i = 0; i != Len; i++) {
Sec = strdup((const char*)ptr[i]);
// snprintf(Sec, 2, "%2.2x", ptr[i]);
// cSec = (char*)pSec;
// pSec += 1;
Sec += 2;
}
snprintf(tLen, sizeof(Len), "%x", Len);
Вот другая функция, которая принимает массив символов для записи в файл, проблема только при написании Sec
.
Ret = WriteProfile(FName, "STOCK", Section[0], tLen);
if (Ret != 1) {
break;
}
Ret = WriteProfile(FName, "STOCK", Section[1], Sec);
if (Ret != 1) {
break;
}
Ret = 0;
} while(0);
У вас есть предложения по улучшению этого кода? Я пробовал много вещей.
Если мксек не ноль завершённая строка, не пытайтесь использовать его в strdup. – simon