![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| MaratGalimov |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 3.5.2014 Репутация: нет Всего: нет |
Доброго времени суток. Не ругайтесь, если спрошу что-то глупое. Просто у меня основной упор на электронику и разработку устройств.
Есть целевое устройство под задачу. Необходимо было написать новое ПО для ПК под новые задачи. Решил сам быстро написать на C# и .Net. Мне надо было преобразовать данные типа ulong в двоичный вид. Ну вспомнил как в школе заставляли еще на Pascal писать подпрограмму, которая раскладывала десятичное число, а потом надо было собрать его в виде 1 и 0, как набор переменных типа символ. Ну грубо говоря и сейчас мне нужно двоичное представление числа, как строка с символами. Она уже отправляется на устройство. Хотелось чего-то более изящного по переводу в двоичный вид, забил в поиск - получил результат, как это сделать штатными средствами.
Проверил, работает. Но вот у меня мои числа в в вычислениях ulong. А на ulong не работает. Т.е. при
Студия 2012 выдает мне ошибки: Error 1 - The best overloaded method match for 'System.Convert.ToString(object, System.IFormatProvider)' has some invalid arguments Error 2 - Argument 2: cannot convert from 'int' to 'System.IFormatProvider' В итоге поменял все переменные с числами на long вместо ulong - программа работает. Но вот потом на дальнейших этапах разработки вылезли грабли, что я не вписываюсь в интервал long: long - signed - with range from -922337203685477508 to 922337203685477507 Мне необходим именно тип ulong, с интервалом: ulong - unsigned - with range from 0 to 18446744073709551615 Собственно вопрос: Как сделать из числа типа ulong его двоичное представлением в виде типа string с последовательностью 0 и 1 (как символы) штатными средствами. Нужен именно string, так как устройство обрабатывает входные данные как символы. Всем заранее спасибо за любую помощь. |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
ну хотя бы так пойдёт?
вообще при чем тут C#, если этому учат на уроках информатики в школе? -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| MaratGalimov |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 3.5.2014 Репутация: нет Всего: нет |
to jonie
Спасибо за помощь.
Когда у меня не получилось перевести десятичное число (ulong number;) в двоичное в виде string с помощью:
Я открыл свой старый "олдскульный" учебник по информатике (еще со школы валялся, весь выцвевший), нашел там главу, где десятичные числа переводили в двоичные делением столбиком (алгоритм замещения), собирая остатки от деления (0 и 1) от младшего к старшему разряду. "В лоб" написал программу по алгоритму из учебника информатики, и стал пользоваться пока таким вариантом:
Но ваш код однозначно более изящен, т.к. меньше и приятнее глазу для чтения!!! Прошу прощения, что не верно выразил вопрос. Собственно вопрос у меня был: Можно ли именно с помощью "Console.WriteLine(Convert.ToString(number, 2));" перевести ulong в двоичный string, не получая при этом два Error'а. Или на ulong "Console.WriteLine(Convert.ToString(number, 2));" работать не будет в принципе. Если работать не будет, то почему так (буду благодарен за информацию). Заранее спасибо. |
||||||
|
|||||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
jonie, а если n == 0?
|
|||
|
||||
| MaratGalimov |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 3.5.2014 Репутация: нет Всего: нет |
Спасибо всем за помощь. Вопрос темы закрыт (как впрочем и тема).
Поговорил с множеством Шарпистов и Дотнетчиков - все сказали: На ulong "Console.WriteLine(Convert.ToString(number, 2));" работать не будет. Хотелось бы подытожить тему двумя методами (из предыдущих ответов): Перевод целого десятичного числа в двоичное (вариант jonie, с добавлением проверки на ноль)
Перевод целого десятичного числа в двоичное (вариант с использованием метода замещения)
|
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |