![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: 7 Всего: 7 |
положим есть длинная строка, в которой записано число в десятичной системе. Как реализовать перевод этой строки в систему с основанием Int32.MaxValue? Я как-то запутался совсем, не понимаю как это красиво написать.
-------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
Soah |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 9 Всего: 54 |
Kakadu, может я чего-то не понимаю, но какими символами ты будишь представлять числа от 10 до Int32.MaxValue?
Посмотри еще метод Convert.ToString(), может что-то найдёшь. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 16 Всего: 306 |
Kakadu, в плане есть строка и ее надо перевести в int?
или я тебя не правильно понял? |
|||
|
||||
Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: 7 Всего: 7 |
Нет. положим у меня
-------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
Soah |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 9 Всего: 54 |
Первое что пришло в голову.
Берём с конца 10-11 символов и конвертируем их в Int64, из этого числа вычитаем Int32.MaxValue, инкрементируем content, а результат добавляем обратно в строку, потом опять берём 10-11 символов... пока в строке не останетца число меньше Int32.MaxValue. |
|||
|
||||
Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: 7 Всего: 7 |
Лично я не понял почему это должно сработать.
Положим у нас исходная строка это "1000000000000". 12 нулей в конце. Давай отщипи 11 символов и покажи как ты отнимишь оттуда Int32.MaxValue. -------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 16 Всего: 306 |
Kakadu, ну отчего же логика в этом есть. Вот смотри int.MaxValue = 2147483647. В строке это занимает 10 символов. Что бы случайно не попасть в значение > int.MaxValue, твой буфер разбиваем по 9 символов и преобразуем в int. Превышения по значению не будет точно.
|
|||
|
||||
Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: 7 Всего: 7 |
да, но если отщеплять по 9 символов, то фактическим основанием будет 10^10, а не Int32.MaxValue; -------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
Soah |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 9 Всего: 54 |
легко ![]()
написал примерно, поэтому алгоритм ещё надо доработать, к тому же, при больших чисел, алгоритм очень медленный, надо подумать над оптимизацией. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |