Форум программистов, компьютерный форум CyberForum.ru

Вывод числа в 16-ричной форме - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.74
Marisha
13 / 13 / 0
Регистрация: 18.08.2011
Сообщений: 34
16.03.2012, 10:49     Вывод числа в 16-ричной форме #1
Пушу на Visual C++

Нужно вывести число (char) в Edit Control (с String переменной m_Edit) в 16-ом виде (0x01)...


C++
1
2
3
4
5
6
char temp = 0x01;
Cstring list;
 
list.Format(_T("%d"), temp);
 
m_Edit=list;
но выводится 1, а нужно 0x01
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
16.03.2012, 11:43     Вывод числа в 16-ричной форме #2
как-то так
C++
1
hex<<32<<число<<endl;
для Вашего примера
C++
1
list.Format(_T("%x"), temp);
или даже
C++
1
list.Format(_T("%hhx"), temp);
Marisha
13 / 13 / 0
Регистрация: 18.08.2011
Сообщений: 34
16.03.2012, 12:01  [ТС]     Вывод числа в 16-ричной форме #3
что-то всё равно 1-ку выводит... ну в принципе это ладно, нолик-то могу приписать

но во если взять
C++
1
char  temp = 0xAA;
то выводит ffaa
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
16.03.2012, 12:03     Вывод числа в 16-ричной форме #4
вот что по этому поводу пишет вики

Например, рассмотрим реализацию Си, где тип char знаковый и имеет размер 8 бит, тип int имеет размер 32 бит, используется дополнительный способ кодирования отрицательных целых.

C++
1
2
char c = 255;
printf("%X", c);
Такой вызов даст вывод FFFFFFFF, что, возможно, не то, чего ожидал программист. Действительно, значение c равно (char)(-1), а после продвижения типа оно оказывается равно -1. Применение формата %X вызывает интерпретацию данного значения как беззнакового, то есть, 0xFFFFFFFF.

C++
1
2
char c = 255;
printf("%X", (unsigned char)c);
C++
1
2
char c = 255;
printf("%hhX", c);
Эти два вызова имеют один и тот же эффект и дают вывод FF. Первый вариант позволяет избежать размножения знака при продвижении типа, второй — компенсирует его уже «внутри» функции printf.
Marisha
13 / 13 / 0
Регистрация: 18.08.2011
Сообщений: 34
16.03.2012, 12:14  [ТС]     Вывод числа в 16-ричной форме #5
Спасибо!!! Всё получилось! =)
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
16.03.2012, 12:19     Вывод числа в 16-ричной форме #6
Цитата Сообщение от Marisha Посмотреть сообщение
Спасибо!!! Всё получилось! =)
покажите итоговый код, плз
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 09:39     Вывод числа в 16-ричной форме
Еще ссылки по теме:

Функция перевода из 10-ричной СС в 80-ричную СС C++
Алфавит 70-ричной системы счисления C++
Палиндром записи числа в 16-ричной системе счисления C++

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

Или воспользуйтесь поиском по форуму:
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
22.12.2012, 09:39     Вывод числа в 16-ричной форме #7
Вот мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <windows.h>
#define null '\0'
int main()
{ const int len = 512;
  unsigned char buf[len];
  FILE *file = fopen("\\\\.\\PHYSICALDRIVE0","rb");
  if (!file)
  { puts("Ошибка открытия файла!");
    return 1;
  }
  fread(buf, sizeof(char), len, file);
  fclose(file);
  for (int i=0; i<len; ++i)
  { if (buf[i]<16)
      printf("0");
    printf("%X ", buf[i]);
  }
}
Спасибо всем
Yandex
Объявления
22.12.2012, 09:39     Вывод числа в 16-ричной форме
Ответ Создать тему
Опции темы

Текущее время: 17:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru