У меня это переменнойЧто такое значение а без знака долго долго в шестнадцатеричных
unsigned long long latitude = 29.47667;
Когда я преобразование этого значения в массив как этого
ar[7] = (uint8_t)((latitude >> 56) & 0xFF);
ar[6] = (uint8_t)((latitude >> 48) & 0xFF);
ar[5] = (uint8_t)((latitude >> 40) & 0xFF);
ar[4] = (uint8_t)((latitude >> 32) & 0xFF);
ar[3] = (uint8_t)((latitude >> 24) & 0xFF);
ar[2] = (uint8_t)((latitude >> 16) & 0xFF);
ar[1] = (uint8_t)((latitude >> 8) & 0xFF);
ar[0] = (uint8_t)(latitude & 0xFF);
Затем отправить его на сервер, используя протокол TCP разъем. Когда я отправляю, я печатаю значения в шестнадцатеричном формате, а затем получаю 0x1d
, оставив все нули.
Как отправить точное значение серверу при преобразовании unsigned long long в int.
Я хочу переменную на 64 разрядную. У меня есть typedef, подписанный long long int64_t, это сработает? – Ishmeet
@Ishmeet 'long long' составляет как минимум 64 бит, это может быть больше. Поэтому переносимым способом является использование 'int64_t' в' stdint.h', если это доступно. –
Я попытался с 'int', а также' int64_t', все равно получил тот же ответ, он не сработал. Можете ли вы мне рассказать, как значение 29.47667 преобразуется в шестнадцатеричный. Это происходит само по себе, или нам нужно сделать некоторые вычисления? – Ishmeet