Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как изменить первые 5 байт в строке типа char - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как поменять цвет scrollbox'a у listbox'a http://www.cyberforum.ru/cpp-beginners/thread494269.html
Как поменять цвет scrollbox'a у listbox'a.......... И сделать его двухмерным....(бордеры scrollbox'a линия......)
C++ Как внедрить dll в чужой процесс Как внедрить длл в чужой процесс, и отлавливать все его сообщения...... если возможно, то небольшой пример или ссылка рус. ресурс.........или объясните на пальцах http://www.cyberforum.ru/cpp-beginners/thread494240.html
Форматированный ввод/вывод в файл C++
подскажите как читать из файла или писать в файл например int ( не используя при этом fprintf & fscanf )
C++ Преобразование типов
кое-что о преобразовании типов. float F; __int32 DW; DW=*(__int32 *)&F; значение DW должно совпадать с F побитово, без всяких преобразований, правильно? будет ли компилятор выполнять какие-либо...
C++ Ищу наставника по С++ http://www.cyberforum.ru/cpp-beginners/thread494153.html
ya ishu pomoshnika ili nastavnika v oblasti c++ kto mojet pomoch pust pishet na david_ginosyan@yahoo.com.
C++ Программная авторизация на почте Яндекса Такая ситуация: Допустим я хочу просто зайти в почту на яндексе. Делаю так: bool ok = false; // инициализируем WinInet HINTERNET hInternet = ::InternetOpen( TEXT('WinInet Test'),... подробнее

Показать сообщение отдельно
John Paramol
Сообщений: n/a
11.04.2011, 17:18
если уж сильно нужно пятибайтовое целое, его можно сделать самому
C++
1
2
3
4
5
6
7
8
9
10
class int40
{
  BYTE data[5];
  public:
  int40() {}
  int40(__int64 p) { *this=p; }
  unsigned __int64 operator=(unsigned __int64 p)
  { memcpy(this,&p,sizeof(*this));  return p&0xFFFFFFFFFF; }
  operator __int64() { __int64 res=0;  memcpy(&res,this,sizeof(*this));  return res; }
};
теперь, например, в том куске кода заменим long:
C++
1
2
3
4
5
char szString[256];
char szTemp[] = 'Hello, World!';
int40 iSize = strlen(szTemp);
*((int40*)szString) = iSize;
memcpy(szString + sizeof(iSize), szTemp, iSize+1);
но только этот пример не дает преимуществ, из-за использования strlen и memcpy;
единственное, что теперь под размер отведется 5 байт, но сам размер не превысит диапазона unsigned int.
А вообще, мне тоже кажется, что автор имел в виду нечто иное
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru