sunsetting
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).