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

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

Войти
Регистрация
Восстановить пароль
 
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
#1

Long int записать в hex побайтно - C++

29.04.2014, 11:46. Просмотров 1083. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток... есть long int число, состоящее из 4 байт, нужно их записать в массив char по 2 байта в ячейку, но эти значения должны быть 16-тиричные.
Вот так брал по 2 байта
C++
1
2
frame[51] = abs(smpCnt >> 4);
frame[52] = abs(smpCnt - frame[51]);
но вот как записать в 16 ричном виде, ума не приложу помогите пожалуйста ))
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4922 / 4260 / 1426
Регистрация: 14.04.2014
Сообщений: 16,746
29.04.2014, 11:49     Long int записать в hex побайтно #2
Как это по 2 байта в ячейку, если char - 1 байт?
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
29.04.2014, 12:24     Long int записать в hex побайтно #3
C
1
sprintf(frame, "%X", smpCnt);
Добавлено через 9 минут
C++
1
2
3
4
5
6
for(i=0; i<8; i++){
  long int digit=(smpCnt>>((8-i)*4))&0x0F;
  frame[i]='?';
  if (digit>=0 && digit<=9) frame[i]='0'+digit;
  if (digit>=10 && digit<=15) frame[i]='A'+digit;
}
IrineK
Заблокирован
29.04.2014, 12:29     Long int записать в hex побайтно #4
Цитата Сообщение от Fobes Посмотреть сообщение
из 4 байт
Цитата Сообщение от Fobes Посмотреть сообщение
по 2 байта
Цитата Сообщение от Fobes Посмотреть сообщение
массив char
О размерах легко узнать:
C++
1
2
3
std::cout << "size of unsigned long int = "<< sizeof(unsigned long int) << '\n';
std::cout << "size of unsigned short int = "<< sizeof(unsigned short int) << '\n';
std::cout << "size of unsigned char = "<< sizeof(unsigned char) << '\n';
Определитесь, что вам нужно: две части по 2 байта или 4 по 1 байту.
Ilot
Модератор
Эксперт С++
1785 / 1160 / 225
Регистрация: 16.05.2013
Сообщений: 3,056
Записей в блоге: 5
Завершенные тесты: 1
29.04.2014, 12:29     Long int записать в hex побайтно #5
Цитата Сообщение от Fobes Посмотреть сообщение
но вот как записать в 16 ричном виде, ума не приложу помогите пожалуйста ))
C++
1
std::cin >> hex >> lint;
Число lint вводится в 16-ом представлении. А дальше делайте с байтами, что хотите.
Если конечно я вас правильно понял и вопрос стоял в вводе в 16-ом формате
IrineK
Заблокирован
29.04.2014, 13:41     Long int записать в hex побайтно #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
 
typedef unsigned long int byte4;
typedef unsigned short int byte2;
typedef unsigned char byte1;
 
typedef union _TwoB
{   byte4 num;
    byte2 arr[2];
} TwoByteArray;
 
typedef union _OneB
{   byte4 num;
    byte1 arr[4];
} OneByteArray;
 
int main()
{   setlocale (LC_CTYPE, "Russian");
    byte4 num = 1234567890;
    std :: cout << "Исходное 4-байтное число в 16-ричном представлении: " 
                << std::hex << num << "\n\n";
 
    TwoByteArray *TB = (TwoByteArray*) &num;
    for (int i = 0; i<2 ; i++)
        std :: cout << i+1 <<"-я пара байт в 16-ричном представлении: " 
                    << std::hex << TB->arr[i] << "\n";
    std :: cout << "\n";
    
    OneByteArray *OB = (OneByteArray*) &num;
    for (int i = 0; i<4 ; i++)
        std :: cout << i+1 <<"-й байт в 16-ричном представлении: " 
                    << std::hex << (byte2) OB->arr[i] << "\n";
 
    std::cin.get();
    return 0;
}
Миниатюры
Long int записать в hex побайтно  
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
29.04.2014, 14:13     Long int записать в hex побайтно #7
HIWORD macro
LOWORD macro
HIBYTE macro
LOBYTE macro
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
29.04.2014, 21:08  [ТС]     Long int записать в hex побайтно #8
Всем спасибо за помощь, сделал так:
C++
1
2
frame[51] = (smpCnt>>8) & 0xff;  
frame[52] = smpCnt & 0xff;
Добавлено через 2 часа 37 минут
Появилась новая проблема, не учитывается знак числа в моем способе Как его подправить можно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 02:35     Long int записать в hex побайтно
Еще ссылки по теме:

52 бит не влазит в long int C++
C++ Быстрое вычисление наибольшего общего делителя для unsigned long long int
C++ Shot int b long double
Long int и int : не понимаю! C++
Максимальная и минимальная цифра числа long long int C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
30.04.2014, 02:35     Long int записать в hex побайтно #9
Fobes,
прочитайте это Дополнительный код

и скажите, а что вы хотите получить?
Yandex
Объявления
30.04.2014, 02:35     Long int записать в hex побайтно
Ответ Создать тему
Опции темы

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