Как преобразовать long в int в .net?
Я разрабатываю приложение для Windows Phone 7 в silverlight. Я новичок в приложении Windows Phone 7. У меня длинное значение в формате String следующим образом
String Am = AmountTextBox.Text.ToString()
AmountTextBox.Text.ToString() в приведенном выше коде является длинным значением, которое находится в строковом формате. Я хочу сохранить 15-значное значение inter в моем приложении.
Я нашел следующую ссылку для преобразования.
Можно ли преобразовать long в int?
Как мне преобразовать длинное значение, которое находится в строковом формате в int? Можете ли вы предоставить мне какой-либо код или ссылку, через которую я могу решить вышеупомянутую проблему? Если я делаю что-то неправильно, то, пожалуйста, направляйте меня.
Ответы
Ответ 1
Вы не можете сохранить 15-значное целое число, так как максимальное значение для целого числа равно 2 147 483 647.
Что случилось с long
-Value?
Вы можете использовать TryParse(), чтобы получить long
-Value от вашего пользовательского ввода:
String Am = AmountTextBox.Text.ToString();
long l;
Int64.TryParse(Am, out l);
Он вернет false
, если текст не может быть преобразован в long
, поэтому он довольно безопасен в использовании.
В противном случае преобразование a long
в int
легко, как
int i = (int)yourLongValue;
если вы счастливы отбрасывать MSB и принимать LSB.
Ответ 2
Используйте Convert.ToInt32(). Если значение слишком велико для int, тогда оно выдает исключение OverflowException.
Этот метод может принимать целый ряд значений, включая Int64 и Strings.
Ответ 3
У вас есть номер, сохраненный как string
, и вы хотите преобразовать его в числовой тип.
Вы не можете преобразовать его в тип int
(также известный как Int32
), потому что, как уже упоминались другие ответы, этот тип не имеет достаточного диапазона для хранения вашего предполагаемого значения.
Вместо этого вам нужно преобразовать значение в long
(также называемое Int64
). Самый простой и безболезненный способ сделать это - использовать метод TryParse
, который преобразует строковое представление числа в его 64-разрядную подписанную целочисленный эквивалент.
Преимущество использования этого метода (вместо того, что-то вроде Parse
) заключается в том, что он не генерирует исключение, если преобразование завершается с ошибкой. Поскольку исключения дороги, вы должны избегать их броска, если это абсолютно необходимо. Вместо этого вы указываете строку, содержащую число для преобразования в качестве первого аргумента метода, и значение out
для получения преобразованного числа, если преобразование завершается успешно. Возвращаемое значение является логическим, указывая, было ли успешным преобразование.
Пример кода:
private void ConvertNumber(string value)
{
Int64 number; // receives the converted numeric value, if conversion succeeds
bool result = Int64.TryParse(value, out number);
if (result)
{
// The return value was True, so the conversion was successful
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
// Make sure the string object is not null, for display purposes
if (value == null)
{
value = String.Empty;
}
// The return value was False, so the conversion failed
Console.WriteLine("Attempted conversion of '{0}' failed.", value);
}
}
Ответ 4
Максимальное значение Int32
в С# равно 2 147 483 647, короче, чем 15 цифр, которые вам нужны.
Вы уверены, что вам нужно преобразовать это значение в int? Похоже, вам лучше сохранить значение в long
или оставить его как String
.
Ответ 5
Длинное значение хранит больше данных, чем значение Integer 32, поэтому, если вы хотите сохранить все 15 цифр, вы не можете преобразовать их в стандартный Integer.
Но помимо "того типа данных, который вы хотите использовать, класс Convert должен помочь вам, например, Convert.ToInt64, который может делать то, что вы хотите
Ответ 6
В С# int
имеется 32 бита, а long
- 64 бита. Поэтому все значения long
не могут быть int
. Может быть, получить массив int
s?
public static int[] ToIntArray(long l)
{
var longBytes = BitConverter.GetBytes(l);
// Get integers from the first and the last 4 bytes of long
return new int[] {
BitConverter.ToInt32(longBytes, 0),
BitConverter.ToInt32(longBytes, 4)
};
}