ďťż

sunsetting

photo

Mam klasę:

Kod:
class Buffer
{
    private:
        char* data;
        bool deleteAfterOverload;
        int filling;
    public:
        (...)
        void Add(const char source[]);
        void Add(const int source);
        (...)
};

Jak zapisać liczbę o typie „int” do tablicy znakowej „data” (zakładając, że jest miejsce) bajt po bajcie? Jeden bajt musi zostać zapisany jako jeden znak tej tablicy, drugi jak drugi znak, trzeci jako trzeci i czwarty bajt jako czwarty znak. W tablicy będą się znajdować również napisy. „Rekordy” mają być oddzielone znakiem „\0”, więc bajty liczby o zawartości 0, które by kolidowały ze znakiem „\0”, muszą być zamienione, np. na znak „*”. Jak to zrobić? Proszę o pomoc.


Powinno działać.
Kod:
unsigned char data[4];                       //int ma 4 bajty
unsigned char *wtab = data;
int liczba = 156;

*(reinterpret_cast<int*>(wtab)) = liczba;           
                                                                for(int i = 3; i >= 0; --i)   //kolejne bajty zmiennej int
    cout << hex << uppercase << static_cast<int>(data[i]) << " ";

Int ma przeważnie 4 bajty, co nie znaczy że zawsze. Użyj operatorów bitowych i sizeof(int).
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kazimierz.htw.pl