c ++ - Indsæt en værdi i buffer i hex format

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en binær fil, som har hex værdier i den. Fx 1d 31 30 2e 30 30 2e 38 33 5f 75 66 6c 78 3b 30


Jeg har et c ++-projekt, hvor jeg læser dataene og behandler oplysningerne ved hjælp af ifstream.


Nu vil jeg ændre en værdi i bufferen. F.eks. 1d bør ændres til 0a.


Følgende er min kode. Problemet her er, jeg får værdien som a i stedet for 0a. Hvordan kan jeg indsætte et perfekt hex-ciffer i bufferen.


void TestMethod()
{
    std::ifstream m\_inputFile;
    m\_inputFile.open("c:\temp.bin", std::ofstream::in | std::ofstream::binary);

    char* buff = new char[300];
    m\_inputFile.read(buff, 300);
    UpdateData(buff, 10);
}

void UpdateData(char* buffer, int val)
{
    int POSITION = 32;

    char capID[2];
    itoa(val, capID, 16);

    std::memcpy(&buffer[POSITION], &capID, sizeof(buffer[POSITION]));
}


Forslag pls.
Tak.

Bedste reference


void UpdateData(char* buffer, int val)
{
    int POSITION = 32;
    char capID[3];  // 1 extra for terminating zero!!!!
    // use good old sprintf
    sprintf(capID, "\%02x",  (val & 0xFF));
    std::memcpy(&buffer[POSITION], &capID, sizeof(buffer[POSITION]));
}