конвертирование long в целое число без потери исходного значения - PullRequest
0 голосов
/ 26 января 2012

Есть ли способ преобразовать длинное значение 8769402740 в целое число и при этом сохранить первоначальное значение.Я знаю об использовании (int) long, однако это меняет внешний вид числа, и это то, что я хотел бы сохранить.

Ответы [ 4 ]

3 голосов
/ 26 января 2012

Используя C #, int означает Int32 , поэтому управляет 32-битными числами.
Длинный номер, который вы нам даете, использует 33 бита (шестнадцатеричный 20AB27774 ), поэтому вы не можете сохранить егозначение после преобразования.
По этой причине ваш номер усекается в пределах 32 битов и становится 0AB27774 .

2 голосов
/ 26 января 2012

Учитывая, что вы используете C #, так как вы не упомянули свой язык программирования и платформу ...

Это невозможно.

Int32.MaxValue значение равно 2,147,483,647. Таким образом, вы не можете разместить 8,769,402,740 в переменной int.

См. Преобразование типов и типов (Руководство по программированию в C #) .

Для встроенных числовых типов неявное преобразование может быть выполнено, когда сохраняемое значение может соответствовать в переменную без усечения или округления . Например, переменная типа long (8 байт integer) может хранить любое значение типа int (4 байта на 32-битном компьютер) можно хранить. Обратное невозможно без потери данных.

0 голосов
/ 13 февраля 2012

Вы можете "сжать" большое число до меньшего числа, см. Предел Шеннона . Тем не менее, вам придется поддерживать способ хранения этих данных. То, что вы просите, является нетривиальным или невозможным по причинам, указанным Марко.

0 голосов
/ 26 января 2012

Вам потребуется tp, чтобы дать больше информации, например, на каком языке вы пытаетесь это сделать, и на какой платформе ??

Целое число изменяется в зависимости от длины процессораиспользуется в большинстве случаев.

Также вы можете объяснить, что вы подразумеваете под поддержанием внешнего вида?

Целое число в 32-разрядной версии окон не может содержать значение 8769402740, поскольку оно слишком велико.

...