Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45

Перевод int в бинарный упакованый вид

26.08.2013, 13:04. Показов 2688. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. Возник такой вопрос, нужно передать данные на сервер в двоичном упакованном виде. Ну допустим , есть циферка 0200 (строка) как её перевести в двоичный упакованный вид? Почитал в интернетах , пишут что , из строки в 4 байта нужно получить 2. Первый байт должен содержать 02 , второй 00. Если упаковать то получим 20. Ход моих мыслей верен или я что-то путаю? Если верен , то как в этом случае быть с числом 1234567890 ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.08.2013, 13:04
Ответы с готовыми решениями:

перевод картинки в бинарный вид
Всем желаю здравия! Люди, нужно перевести картинку в бинарный вид, т.е. у меня есть картинка 'C:xxx.jpg', есть переменная PrintImage,...

Бинарный вид
Мне нужен код который слово "hello" переводит в бинарный вид.

Pdf в бинарный вид и обратно
Здравствуйте! Подскажите,пожалуйста,как перевести выбранный мной pdf-файл в бинарный вид и обратно?

12
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
26.08.2013, 13:19
Цитата Сообщение от Whyte Посмотреть сообщение
Ход моих мыслей верен или я что-то путаю? Если верен , то как в этом случае быть с числом 1234567890 ?
Обычно для земных целых чисел (чисел, укладывающихся в какие-то пределы вроде ±2n) оговаривается отведенное количество байт и порядок байт.

Для 123456789010 = 499602d216 потребуется как минимум 4 байта: 0x49, 0x96, 0x02 и 0xD2.
1
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45
26.08.2013, 13:30  [ТС]
Ага, с байтами понял, спасибо. Тогда другой пример, вот есть циферка 4000011 (10) если перевести её в двоично-десятичный код то получим 0100 0000 0000 0000 0000 0001 0001 (2) , вопрос вследующем, как из этого длинного двоичного кода сделать упакованный? Вот это никак не пойму.
0
1972 / 828 / 115
Регистрация: 01.10.2012
Сообщений: 4,981
Записей в блоге: 2
26.08.2013, 14:30
Цитата Сообщение от Whyte Посмотреть сообщение
Возник такой вопрос, нужно передать данные на сервер в двоичном упакованном виде. Ну допустим , есть циферка 0200 (строка) как её перевести в двоичный упакованный вид? Почитал в интернетах , пишут что , из строки в 4 байта нужно получить 2. Первый байт должен содержать 02 , второй 00. Если упаковать то получим 20.
Нет никакой "упаковки", есть сивольное и машинное представление данных. Тот же пример: строка "0200" (читабельные символы). Если Вы переведете ее в int (машинный формат) напр ф-цией atoi, то будет

0xC8 00 00 00
или
0x00 00 00 С8 (на некоторых процессорах)

Это содержимое 4-х байтов как они хранятся в памяти. Все что Вам надо сделать - определиться с размером передачи, это решаете Вы. Хотите передавать 1234567890 как одно число - размер 4, а если все числа < 256 то можно и по 1 байту.
1
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45
26.08.2013, 15:11  [ТС]
Igor3D, Вы абсолютно правы, но проблема немножечко в другом. Ситуация вот какая: Есть сервер , который принимает данные, принял , и перевёл циферки из упакованного двоично-десятичного кода в int мне необходимо перед отправкой на сервер, запаковать в этот самый двоично десятичный код. Вот и спрашиваю как это будет выглядеть на примере 2х цифирек.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
26.08.2013, 15:26
Сначала вы говорили о двоичном упакованном виде, про который вообще никто не знает, что это такое.
И наконец вы правильно сформулировали всем известный термин "двоично-десятичный упакованный код"
Цитата Сообщение от Whyte Посмотреть сообщение
вот есть циферка 4000011 (10) если перевести её в двоично-десятичный код то получим 0100 0000 0000 0000 0000 0001 0001 (2) , вопрос вследующем, как из этого длинного двоичного кода сделать упакованный? Вот это никак не пойму.
это и есть двоично-десятичный упакованный вид. Иногда отдельно договариваются, какой полубайт использовать для передачи знаков + или -

Добавлено через 4 минуты
И еще обратите внимание на то, в каком порядке должны передаваться байты на сервер: начиная со старших разрядов или начиная с младших. В последнем случае полубайты в байте, возможно, придется поменять местами.
1
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45
26.08.2013, 15:49  [ТС]
Спасибо большое всем. Я понял. Прошу извинить за неточность в формулировке.
0
1972 / 828 / 115
Регистрация: 01.10.2012
Сообщений: 4,981
Записей в блоге: 2
26.08.2013, 17:08
Цитата Сообщение от Whyte Посмотреть сообщение
Ситуация вот какая: Есть сервер , который принимает данные, принял , и перевёл циферки из упакованного двоично-десятичного кода в int мне необходимо перед отправкой на сервер, запаковать в этот самый двоично десятичный код. Вот и спрашиваю как это будет выглядеть на примере 2х цифирек.
"Десятичная арифметика" - когда в байте хранятся 2 десятичные (а не 2 шестнадцатиричные) цифры. Это поддерживалось на машинах IBM (которые у нас назывались ЕС) ну так лет 30 назад, а на "персоналках" этого никогда не было. Можно поддерживать самому такой формат - но не видно зачем

Любая передача имеет формат пакета, напр

int ID; // идентификатор
int size; // размер данных

Т.е. сколько и каких байт должно быть известно. А Вы вцепились в большое и маленькое число
1
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45
26.08.2013, 20:02  [ТС]
И так, уважаемые форумчане, спешу поделиться своей маленькой радостью.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdlib.h>
#include <stdio.h>
 
 
 
 
unsigned char str_to_bcd(char * str, int len)
    {
        unsigned char value;
        int i;
 
      if(str[0] >= '0' && str[0] <= '9')  // 0-9 
      {
       value = ( str[0] - '0')  << 4 ; 
      }
      else
      {
       printf("Out of range \n");
       return -1;   
      } 
                 
       
      for (i = 1; i < len; i++ )
      {
        if(str[i] >= '0' && str[i] <= '9')  
         {
          value |= ( str[i] - '0');               
         }
        else
        {
         printf("Out of range \n");
         return -1; 
        }
      }
     return value;
    }
 
 
   
 
int main ()
{
  
     char mass[10]={'1','2','3','4','5','6','7','8','9','0'};
     unsigned char bcd;
  
     bcd=str_to_bcd(mass,10);
     printf(" bcd %d \n", bcd);
 
      exit(0);
}

Таким образом можно кодировать любые циферки, а если дописать парустрочек , то и буковки. На стороне сервера это всё в обратном порядке раскодируется и все счастливы. Таким нехитрым способом , можно скинуть объём сетевого трафика. Вот подумал, может кому пригодится.
0
1972 / 828 / 115
Регистрация: 01.10.2012
Сообщений: 4,981
Записей в блоге: 2
26.08.2013, 20:46
Цитата Сообщение от Whyte Посмотреть сообщение
На стороне сервера это всё в обратном порядке раскодируется и все счастливы.
Думается что нет, т.к операция | необратима. Ну ничего, зато с креативом все норм
1
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45
27.08.2013, 19:29  [ТС]
Блин, печалька

Добавлено через 7 часов 20 минут
Наконец получил доступ к серваку, порывшись нашёл декодер который должен будет раскодировать мои циферки вот он:
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
 int bcdtoi( const unsigned char *numptr, int len )
{
   register int i;
   int  lnum = 0;
   int   tens_digit, ones_digit;
 
   for (i = 0; i < len; i++ )
   {
      tens_digit = numptr[i] >> 4;
      printf("tens_digit %d \n",tens_digit);
 
      ones_digit = numptr[i] & 0x0f;
      printf("ones_digit %d \n",ones_digit);
 
      if( tens_digit > 9 || ones_digit > 9 )
       {
         printf("Out of range \n");
         return -1;
       } 
 
      lnum *= 100;
      lnum += (tens_digit * 10 + ones_digit);
   }
   printf("lnum %d \n",lnum);
   return lnum;
}
Подскажите пожалуйста, я если честно не понимаю , причем здесь формат BCD моя рание описаная функция (str_to_bcd) переводит циферки в этот формат, но bcdtoi явно преобразует не так как я ранее думал. В каком виде мне необходимо послать на в ход данные, что бы она распарсила коректно?
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
27.08.2013, 19:57
BCD (Binary Coded Decimal) и посылать. Знак не предусмотрен. Порядок байтов начиная со старших разрядов (Big Endian). То есть, десятичное число 27921 будет представлено такими параметрами
C
1
2
char *numptr={0x02,0x79,0x21};
int len=3;
1
6 / 4 / 1
Регистрация: 05.01.2013
Сообщений: 45
28.08.2013, 12:13  [ТС]
Спасибо огромное!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2013, 12:13
Помогаю со студенческими работами здесь

Конвертация HEX сообщения в бинарный вид
Всем привет! Ребята, возник такой вопрос Я конвертирую сообщение в HEX виде (202CC371C32CE0) в бинарный путем следующего кода: void...

Преобразовать 8-битное число в бинарный вид строки
Доброго времени суток! Имеется задача, преобразовать 8-битное число в бинарный вид строки: Int16 temp = Convert.ToInt16(str); ...

Метод, превращающий число в бинарный вид и наоборот
Есть ли какой метод, что превращает число в бінарний вид и на оборот?

Перевод систем счисления int в int
Объясните пожалуйста, существует ли вообще метод перевода из 10-й системы счисления в 2-ую если исходные данные int и получится тоже должны...

Запись масива int-ов в бинарный файл
Задание звучит так: Напишите функцию bool writeIntArray(const int arr, int size, FILE *fp), которая записывает содержимое массива int'ов...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru