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

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

Войти
Регистрация
Восстановить пароль
 
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
#1

байты в строку - C++

23.11.2009, 16:19. Просмотров 815. Ответов 6
Метки нет (Все метки)

как можно перевести 4 байта F1 08 25 12 а строку А1082512 ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2009, 16:19     байты в строку
Посмотрите здесь:

Различные байты - C++
помогите, организовать цикл в котором перебираются все возможные варианты байт!! т.е составить массив где первым байтом будет 0x00 а...

Упорядочить байты - C++
Помогите додумать. Нужны упорядочить байты в порядке возрастания количества еденичных битов в них(ввод в шестнадцетиричнйо системе). ...

Первые байты - C++
Задача вот в чем, надо получить 3 первых байта из файла. Подскажите как это сделать ?

Поменять байты - C++
Есть задача: дано число long int получить другое число путем перестановки двух ПОСЛЕДНИХ байтов с двумя ПЕРВЫМИ байтами. void...

Упаковка в байты - C++
Можно ли упаковать массив bitset допустим из 100 тысяч битов в байты, чтобы записать это дело в файл или можно записывать сразу в файл(но...

Конвертация из бит в байты - C++
есть битовый массив bitset, заполненый определённым образом. есть char* bytes далее мне понадобилось из массива битов сделать массив...

Достать байты из переменной - C++
есть некий класс\структура. Например: class CLScls { private: int a, b, c; char d; string str; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
23.11.2009, 16:26     байты в строку #2
Откуда байты берешь???
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
23.11.2009, 16:34  [ТС]     байты в строку #3
из ком порта
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
23.11.2009, 16:59     байты в строку #4
Valery_,
как можно перевести 4 байта F1 08 25 12 а строку А1082512 ?

C++
1
2
3
4
5
6
7
8
9
template <size_t N>
std::string convert(const unsigned char (&arr)[N])
{
    std::stringstream ss;
    for (size_t i=0; i<N; i++)
        ss << std::hex << std::uppercase << std::setw(2) << std::setfill('0')
            << (unsigned) arr[i];
    return ss.str();
}
unsigned char arr[] = {0xF1, 0x08, 0x25, 0x12};
const std::string s = convert(arr);
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
30.11.2009, 12:17  [ТС]     байты в строку #5
если чесно не понял этого кода. Просто можно ли объяснить систему. код я сам составлю. просто не понимаю процесс. как назад в быйты перевести я разобрался.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
30.11.2009, 12:46     байты в строку #6
Цитата Сообщение от Valery_ Посмотреть сообщение
как можно перевести 4 байта F1 08 25 12 а строку А1082512 ?
Откровенно дурацкий способ, но работает
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
 
/* revstr - строка наоборот */
char *revstr(char *s){
    char *h = s; /* head */
    char *t = h + strlen(s) - 1; /* tail */
    char c;
    
    while ( h < t ){
        c = *h;
        *h = *t;
        *t = c;
        h++;
        t--;
    }
    
    return(s);
}
 
/* возвращает в buf строку не длиннее len - 1 символов, представляющую число num в CC с основанием base, или NULL при неудаче */
char *itoan(char *buf, int len, unsigned int val, int base){
    static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
    char *str = buf;
 
    if ( (base < 2) || (base > 35) )
        return(NULL);
    
    while ( val ){
        if ( --len < 1 )
            return(NULL);
        *buf++ = num[val % base];
        val /= base;
    }
    *buf = '\0';
    return(revstr(str));
}
 
/* revarr - массив наоборот */
char *revarr(char *arr, size_t length){
    char *head, *tail, c;
    for ( head = arr, tail = arr + length - 1; head < tail; head++, tail-- ){
        c = *head;
        *head = *tail;
        *tail = c;
    }
    return arr;
}
 
typedef union {
    char cval[4];
    unsigned int ival;
} Un_t;
 
int main(void){
    Un_t un = { 0xF1, 0x08, 0x25, 0x12 };
    char str[9] = { 0 };
    
    revarr(un.cval, 4);
    printf("%s\n", itoan(str, 9, un.ival, 16));
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2009, 23:00     байты в строку
Еще ссылки по теме:

Байты бинарных данных - C++
Могут ли в числе байт изображения быть отрицательные байты со значение -1, -100 и так далее? Или бинарные данные могу содержать только...

перевессти байты в слово - C++
привет)))есть массив байтов(шестнадцатеричный) 53 48 4f 52 54 и т.д., есть признак того, что этому массиву соответсвует либо int, либо...

Разбиение вещественного числа на байты - C++
Доброго времени суток! Требуется помощь начинающему =) Имеется число типа float, занимающее 4 байта. Для передачи этого числа по...

Изменить четные и нечетные байты - C++
вот код: HANDLE fileHandleNEW =(HANDLE)((DWORD)fileHandle + 1000); CopyMemory(fileHandleNEW, fileHandle, DWORD_sizeOfFile); int*...

Заменить определенный байты изображения - C++
Здравствуйте, я хочу заменить определенный байты изображения, вроде бы по коду у меня все нормально, но похоже я что-то напутал с флагами...


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

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
30.11.2009, 23:00     байты в строку #7
как можно перевести 4 байта F1 08 25 12 а строку А1082512 ?
Тут ошибка - либо байт A1, либо строка F1..

Перевести байты в строку:
C
1
2
3
4
int b[]= { 0xF1, 0x08, 0x25, 0x12 };
char buf[32];
 
snprintf( buf, sizeof(buf), "%02X%02X%02X%02X", b[0], b[1], b[2], b[3] );
Yandex
Объявления
30.11.2009, 23:00     байты в строку
Ответ Создать тему
Опции темы

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