Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.92
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
#1

Преобразование типа byte в десятичный - C++

08.03.2011, 22:34. Просмотров 3242. Ответов 34
Метки нет (Все метки)

Здравствуйте!

Читаю файл побайтово, записал в переменную byte a[2] соответственно 2 байта, которые находятся в 16ричной системе. В этих 2х байтах лежит размер. Так вот, мне нужно узнать этот размер в десятичной системе счисления. Подскажите пожалуйста как это сделать.

Например, число 4F12h.
Есть ли какая-нибудь стандартная функция. Калькулятором перевести могу, но нужно в коде на с++.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2011, 22:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование типа byte в десятичный (C++):

Преобразование типа или преобразование типа указателя ? - C++
Добрый день. Помогите пожалуйста понять что делает вот эта команда: out.write ((char *) &n, sizeof n); Она что, перед записью в файл...

Преобразование String в Byte C++ - C++
как преобразовать массив из string (или только string) в byte? допустим, есть массив: string word; string mas; ...

Преобразование из HEX в BYTE - C++
Теперь у меня есть массив (строка) с хекскодами и я хочу ее преобразовать в BYTE, нашел вот такую функцию int hex( char c ) { ...

Вывести в консоль значение типа BYTE - C++
COLORREF pix=GetPixel(hdc,0,0); BYTE b=GetGValue(pix); std::cout<<b<<std::endl; В консоль выводится какие-то знаки, а мне нужно...

Последовательность после обработки надо записать в массив типа BYTE - C++
Дана последовательность символов типа CHAR и мне эту последовательность после обработки надо записать в массив типа BYTE. Далее массив...

"Преобразование" из uint8_t в byte [] - C++
Здравствуйте, такой вопрос Нужно преобразовать значение из uint8_t в массив byte То есть: Дано uint8_t s; byte d; s=15; (в...

34
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 22:39 #2
Ortistx, в двух байтах может быть только два символа
и почему там размер в 16ной системе?

Добавлено через 1 минуту
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
  const char* str = "4F12";
  int val;
  sscanf( str, "%x", &val );
  printf( "%d", val );
  return 0;
}
0
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
08.03.2011, 22:40  [ТС] #3
alex_x_x, я читаю файл так: fread(a, 1, 2, f);
Насколько я понял, данные записываются туда в 16ричной.

Т.е. если мы представляем число в 16ричной, то в 2 байта может поместиться FFFFh, не так?
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 22:43 #4
Ortistx, да, но это будут не символы
в символы они превратятся при выводе
0
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
08.03.2011, 22:44 #5
Ortistx, зависит от того, что записано
Если записано например число инт, то его можно считать как 4 байта.
0
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
08.03.2011, 22:45  [ТС] #6
да, но это будут не символы
Число? В какой системе?

Т.е. если я делаю так:

byte a;
fread(a, 1, 2, f);

что будет в a?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 22:52 #7
Ortistx, наверно зависит от того что вы читаете?
0
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
08.03.2011, 22:58  [ТС] #8
я читаю jpeg-файл.
Насколько я знаю, все файлы состоят из нулей и единиц. Jpeg-файл тоже. Мне нужно прочитать этот файл побайтово. Для удобства jpeg-файл представляют в 16ичной системе. Собственно мне нужно обрабатывать эти 16ичные данные, а конкретно надо обработать определенные 2 байта, в которых содержится число. Я эти байты нашел. Теперь необходимо достать из них число в десятичной форме.

Читаю я так:

C++
1
2
3
4
    byte a[2];
    FILE *f;
    f = fopen("1.jpg", "rb");
    fread(a, 1, 2, f);
Как теперь увидеть, то что лежит в a в десятичной системе?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 23:12 #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef unsigned char byte;
 
int main()
{
  byte b[2];
  int a = 1000;
  memcpy( &b, &a, 2 );
  printf( "%x_%x\n", b[0], b[1] );
  a = 0;
  memcpy( &a, b, 2 );
  printf( "%d\n", a );
  return 0;
}
Bash
1
2
e8_3
1000
Добавлено через 39 секунд
memcpy мне кажется самое удобное и правильное средство
1
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
08.03.2011, 23:30  [ТС] #10
Спасибо.
А в тексте, который я привел, что же все-таки лежит в a?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 23:33 #11
там лежат два байта считанных из файла =)
0
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
08.03.2011, 23:36  [ТС] #12
а в каком формате?

или суть в том, что там лежат 2 байта, а то в каком формате - зависит от того, как мы будем читать?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.03.2011, 20:11 #13
Ortistx, уясните что такое формат
все в памяти компьютера представлено единообразно
можно считать, что там хранятся числа
вопрос в их интерпретации и формате вывода
ну я не знаю
http://www.infosgs.narod.ru/quest_11.htm
когда вы выполняете чтение, вы получаете то что там лежало, а формат он пренципиален только для вывода
0
Ortistx
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 39
11.03.2011, 20:15  [ТС] #14
alex_x_x, спасибо, это понял.

Так вот вопрос в том, что некоторые функции работают только с определенным форматом данных.
Вот у меня и стоит задача из формата byte[2] перевести это в число, которое можно будет использовать потом для разных задач, в том числе для выделения памяти.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.03.2011, 20:17 #15
ну это уже третье дело
какой смысл преобразования и в каком контексте?
0
11.03.2011, 20:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2011, 20:17
Привет! Вот еще темы с ответами:

Преобразование типа - C++
class ne { public: ne(); ~ne(); double x1; char l; }; ne O; ne::~ne(){};

Преобразование типа - C++
Есть числа типов int и double. Их надо преобразовать в тип char, чтобы записать их в поток(файл *.bin). И какая функция соединяет...

Преобразование типа - C++
Есть две переменные: CString m_strVal; long m_lVal; Как c помощью MFC преобразовать тип long в CString, чтобы можно было...

Преобразование типа переменной - C++
Как сделать что бы компилятор не отслеживал преобразование типов переменных Конкретней на примере: #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.