Подтвердить что ты не робот

Как преобразовать long в int в .net?

Я разрабатываю приложение для Windows Phone 7 в silverlight. Я новичок в приложении Windows Phone 7. У меня длинное значение в формате String следующим образом

String Am = AmountTextBox.Text.ToString() 

AmountTextBox.Text.ToString() в приведенном выше коде является длинным значением, которое находится в строковом формате. Я хочу сохранить 15-значное значение inter в моем приложении.

Я нашел следующую ссылку для преобразования.

Можно ли преобразовать long в int?

Как мне преобразовать длинное значение, которое находится в строковом формате в int? Можете ли вы предоставить мне какой-либо код или ссылку, через которую я могу решить вышеупомянутую проблему? Если я делаю что-то неправильно, то, пожалуйста, направляйте меня.

4b9b3361

Ответ 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)
    };
}