1 Востаннє редагувалося FakiNyan (06.10.2014 21:53:32)

Тема: Чому замість масиву байт використовується масив char?

Хай. От довблюся

Прихований текст
в сраку

з сокетами і помітив, що такі основні функції як send та recv, замість масиву байтів передають масив символів.

int sendto(
  _In_  SOCKET s,
  _In_  const char *buf,
  _In_  int len,
  _In_  int flags,
  _In_  const struct sockaddr *to,
  _In_  int tolen
);

Я звик до того, що передається саме масив байтів. В C# була купа методів, котрі дозволяли ковертувати дані різних типів в масив байт, а потім я міг зліплювати ті масиви байт як завгодно.
Але в C++ я такого не побачив.
Як же мені працювати з цим масивом char'ів?

Говоріть українською! Живіть українською! Відчувайте українською!

2

Re: Чому замість масиву байт використовується масив char?

Спеціально для цього придумали reinterpret_cast:

char buf[100];
*reinterpret_cast<int *>&buf[4] = myValue;//записуємо 4 байти в масив, в байти 4-7
Подякували: 0xDADA11C7, FakiNyan2

3 Востаннє редагувалося 0x9111A (07.10.2014 01:11:15)

Re: Чому замість масиву байт використовується масив char?

завжди любив синтаксис С++  :)
можна ще

memcpy(buf+4, &myValue, sizeof(myValue));

Головне бути обізнаним в порядку порядку байтів а то результат може здивувати.

Maybe a = Just a | Nothing
Подякували: koala, FakiNyan2