Как цифры 1101004800 соответствуют номеру 20? - PullRequest
7 голосов
/ 27 июня 2011

Я пытаюсь узнать, как изменить ячейки памяти с помощью C ++, и когда я возился с MineSweeper, я заметил, что когда значение часов в памяти было 1101004800, в игре было 20 секунд. Цифры 1101529088 соответствуют 21 секунде игры. Может кто-нибудь объяснить мне, как преобразовать эти 10-значные длинные числа в основание-10?

Ответы [ 2 ]

8 голосов
/ 27 июня 2011

Они используют поплавки для представления таймера.Вот программа, которая конвертирует ваши целые числа в числа с плавающей точкой:

#include <stdio.h>

int main() {
  int n = 1101004800;
  int n2 = 1101529088;

  printf("%f\n", *((float*)&n));
  printf("%f\n", *((float*)&n2));

  return 0;
}

Вывод:

20.000000
21.000000
4 голосов
/ 27 июня 2011

1101004800 десятичное число 0x41A00000 шестнадцатеричное, что является IEEE-754 представлением 20.0. 1101529088 десятичное число 0x41A80000 в шестнадцатеричном формате, которое является IEEE-754 представлением 21.0.

...