С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 11

Перевод числа из BCD формата в Десятичный

13.03.2016, 17:51. Показов 6145. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток форумчане!

Подскажите, как переменную в BCD формате представить в десятичном виде.

В описании к переменной есть подсказка
Transponder setting, 4 digits in BCD format: 0x1200 means 1200 on the dials.
Transponder - (грубо говоря) табло состоящее из 4х цифр.
1200 - указанное выше, это один из вариантов набора цифр на данном табло.

Кусок кода, где я получаю свою переменную:
C#
1
2
3
4
5
6
              resultSqw = fsuipc.FSUIPC_Open(dwFSReqSqw, ref dwResultSqw);
            resultSqw = fsuipc.FSUIPC_Read(dwOffsetSqw, dwSizeSqw, ref tokenSqw, ref dwResultSqw);
            resultSqw = fsuipc.FSUIPC_Process(ref dwResultSqw);
            resultSqw = fsuipc.FSUIPC_Get(ref tokenSqw, ref dwResultSqw);
            double Sqw = dwResultSqw;
            System.Console.WriteLine("Sqw=", Sqw);
Помогите дописать код!

Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2016, 17:51
Ответы с готовыми решениями:

Перевод числа из упакованного BCD-формата в ASCII-формат
Есть программа, которая считает разницу 873451-548197 используя ASCII формат, потом результат переводиться в упакованный BCD-формат. ...

Перевод числа из двоичного формата в двоично-десятичный
Подскажите как переводить числа из одного формата в другой.

Перевод из hex четырехбайтового формата в десятичный
Добрый день. Есть число int32 (4 байта) в формате hex. FF FF FF CC = -53 в десятичной. Подскажите пожалуйста, каким образом получили...

6
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.03.2016, 18:21
Цитата Сообщение от nstk Посмотреть сообщение
как переменную в BCD формате представить в десятичном виде.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
 
namespace ConsoleApplication207
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var bcd = 0x9200;
            var res = BCDtoDEC((UInt16)bcd);
 
            Console.WriteLine(res);
            Console.ReadLine();
        }
 
        static int BCDtoDEC(UInt16 bcd)
        {
            int res = 0;
            int mult = 1;
 
            for (int i = 0; i < 4; i++)
            {
                res += (bcd & 0xF) * mult;
                bcd >>= 4;
                mult *= 10;
            }
 
            return res;
        }
    }
}
1
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 11
13.03.2016, 18:41  [ТС]
А как встроить это в мой код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using FsuipcSdk;
class Program
{
    static void Main()
    {
        Fsuipc fsuipc = new Fsuipc();  
        
        bool resultSqw = false;
        int dwFSReqSqw = 0;
        int dwOffsetSqw = 0x0354;
        int dwSizeSqw = 2;
        int tokenSqw = 0;
        int dwResultSqw = 0;
 
 
       fsuipc.FSUIPC_Initialization();
 
        while (true)
        {
 resultSqw = fsuipc.FSUIPC_Open(dwFSReqSqw, ref dwResultSqw);
            resultSqw = fsuipc.FSUIPC_Read(dwOffsetSqw, dwSizeSqw, ref tokenSqw, ref dwResultSqw);
            resultSqw = fsuipc.FSUIPC_Process(ref dwResultSqw);
            resultSqw = fsuipc.FSUIPC_Get(ref tokenSqw, ref dwResultSqw);
            double Sqw = dwResultSqw;
 
            System.Console.WriteLine("Sqw=", Sqw); 
                
              fsuipc.FSUIPC_Close();
        }        
    }
}
Спасибо!
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.03.2016, 18:53
Цитата Сообщение от nstk Посмотреть сообщение
А как встроить это в мой код:
C#
1
           resultSqw = fsuipc.FSUIPC_Get(ref tokenSqw, ref dwResultSqw);
=>
C#
1
2
3
           resultSqw = fsuipc.FSUIPC_Get(ref tokenSqw, ref dwResultSqw);
           int Sqw = BCDtoDEC((UInt16)dwResultSqw);
           System.Console.WriteLine("Sqw=", Sqw);
1
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 11
13.03.2016, 19:25  [ТС]
Работает, но выдает не то.

Должно быть:
Переменная - значение на табло
131072 = 0001
131073 = 0002
131074 = 0003
...
131079 = 0007
131088= 0010
131089 = 0011
131090 = 00012

131191 = 0077
131328 = 0100

131600 = 0210

135168=1000
135169 = 1001

2000=139264
2001=139265

Дисплей отображает только числа от 0 до 7, т.е. минимальное значение 0000 максимальное 7777, все промежуточные числа с цифрами 8 и 9 отсутствуют.
После 0077 идет 0100, а после 0107 идет 0110.

Вот такая запутанная задача, для новичка.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.03.2016, 19:32
Цитата Сообщение от nstk Посмотреть сообщение
Переменная - значение на табло
131072 = 0001
C#
1
2
           resultSqw = fsuipc.FSUIPC_Get(ref tokenSqw, ref dwResultSqw);
           int Sqw = BCDtoDEC((UInt16)(dwResultSqw - 0x20000));
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 11
14.03.2016, 10:31  [ТС]
Ругается на
Ошибка 2 Элемент "BCDtoDEC" не существует в текущем контексте.

Добавлено через 14 часов 46 минут
После теоретических выкладок на бумаге оказалось, что:

числа от 0 до 7 это

Dec(переменная Sqw-131071) в Шестнадцатеричной системе.

от 10 и выше

Dec (переменная Sqw - 131072) в шестнадцатеричной системе:

Dec - HEX
1 = 0001
2 = 0002
3 = 0003
...
7 = 0007
16= 0010
17 = 0011
18 = 00012

119 = 0077
256 = 0100

528= 0210

4096=1000
4097 = 1001

8192=2000
8193=2001

Так что, задача поменялась на конвертацию DEC->HEX
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2016, 10:31
Помогаю со студенческими работами здесь

Перевод из hex двухбайтового формата в десятичный
Добрый день. Есть 2 байта : 07 DF - Это число 2015. Скажите пожалуйста, как перевели из 07 DF в 2015? Спасибо. Добавлено через...

Перевод шестнадцатеричного числа в десятичный вид
Нужно перевести число BA9FB000 BA9FB000 = 1 01110101 00111111011000000000000 Мантисса =1, 00111111011 Смещенный порядок = ...

Перевод числа в двоично-десятичный код
Есть задание: Сформировать массив из 10 однобайтных чисел, перевести их в двоично-десятичный код, сложить. Результат поместить в регистр...

Перевод целого числа из шестнадцатиричного вида в десятичный и наоборот
Создать приложение для перевода целого числа, заданного пользователем в специальный редактор (компонент TMaskEdit), из десятичной системы...

Перевод десятичного числа в двоично-десятичный код с использованием функции
Нужна программа для перевода десятичного числа в двоично-десятичный код, с использованием функции! Мне нужна помощь, при запуске я ввожу...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru