С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
.NET 4.x

Перевод BigInteger в двоичную строку

17.03.2016, 18:41. Показов 4455. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
САБЖ.

Собственно первое, что пришло в голову, это сделать ToByteArray, а его ToString, однако наткнулся на очень любопытную делать...
Судя по всему ToByteArray возвращает байты в обратном порядке..

Для примера взял число 70010 = 10101111002

На выходе ожидал строку "1010111100" или "0000001010111100"
C#
1
2
3
4
5
BigInteger BigI = 700; //1010111100
 
byte[] BigIArray = BigI.ToByteArray();
            
string result = string.Concat(BigIArray.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')));
BigIArray[0] = 18810, BigIArray[1] = 210
result = "1011110000000010"

Как получить адекватный результат?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2016, 18:41
Ответы с готовыми решениями:

Метод BigInteger.GreatestCommonDivisor (BigInteger, BigInteger)
Как использовать в C# windowsforms метод BigInteger.GreatestCommonDivisor (BigInteger, BigInteger)? Пример кода.

Быстрый перевод значений цветов пикселей изображения в двоичную систему счисления и запись их в строку
Здравствуйте. Имеется изображение формата bmp. Для получения цветов пикселей использую Scanline. Вопрос в следующем, можно ли и как...

Перевод int в BigInteger
Как перевести из BigInteger в int знаю, а вот как наоборот? Добавлено через 25 минут Нашел ответ: сначала нужно из int перебить в...

6
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.03.2016, 21:57
awp-sirius, ну а в чем проблема? 10111100 = 188, 00000010 = 2. Все верно.
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
17.03.2016, 22:37  [ТС]
Да, верно. Но порядок обратный.
В данном случае операция:
C#
1
string res = string.Join(" ", BigIArray .Select(x => Convert.ToString(x, 2).PadLeft(8, '0')));
Вернёт "10111100 00000010", что если перевести обратно в десятичку = 48130.

Решил проблему следующим образом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        public static string ToBinaryString(BigInteger bigint)
        {
            var bytes = bigint.ToByteArray();
            var idx = bytes.Length - 1;
            var base2 = new StringBuilder(bytes.Length * 8);
            var binary = Convert.ToString(bytes[idx], 2);
            base2.Append(binary);
 
            for (idx--; idx >= 0; idx--)
            {
                base2.Append(Convert.ToString(bytes[idx], 2).PadLeft(8, '0'));
            }
 
            return base2.ToString();
        }
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.03.2016, 23:36
awp-sirius, ну да, вы же сами запихиваете в старший разряд 188, а в младший - 2. Хотите иного поведения, делайте reverse:
C#
1
2
3
4
5
BigInteger BigI = 700; //1010111100
 
byte[] BigIArray = BigI.ToByteArray();
            
string result = string.Concat(BigIArray.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')).Reverse());
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
17.03.2016, 23:38  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
вы же сами запихиваете в старший разряд 188, а в младший - 2
Где?
Я так понимаю это особенности BigInteger..
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.03.2016, 23:48
awp-sirius, а не, неправильно код прочитал.
Ну да, ему так удобнее хранить, я тоже когда полиномы делал также делал, младшие разряды в начале, старшие - в конце.
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
17.03.2016, 23:49  [ТС]
Psilon, В любом случае спасибо за Reverse)
Как говорится, а слона-то я и не приметил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2016, 23:49
Помогаю со студенческими работами здесь

Как делить одно число BigInteger на другое BigInteger, при чем не теряя остаток
Помогите пожалуйста. Надо поделить одно число BigInteger на другое, при чем в результате сохранить весь остаток

Перевод в двоичную сс
Подскажите код программы для перевода числа в двоичную систему. Вот примерная форма, мне надо только в 2чную, для примера. В другие уже сам...

Оператор for. Перевод из 10 СС в двоичную
Не знаю как с помощью цикла for записать данную программу. Подскажите, пожалуйста.

Перевод в двоичную систему
Здравствуйте, как сделать программу в которой можно переводит числа в двоичную систему.Например дано одно слово его нужно перевести в...

Перевод из десятичной СС в двоичную
Исходные данные поместить в сегменте данных. Результаты вывести на экран. Дано десятичное число, записанное в виде строки ASCII-символов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru