Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Из строки в 16ричное число, "00 01 ff a0" -> 00 01 ff a0 
V
    Опции темы
BIV
Дата 25.10.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Добрый день!
Подскажите пожалуйста как из строки такой записи s="00 01 ff a0 ..." перевести в 16-ричное представление, т.е. a=00 01 ff a0 ... 
PM MAIL   Вверх
Earnest
Дата 25.10.2012, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Например, strtol, с указанием правильной базы.
И это будет, конечно, не 16-ричное представление, а просто бинарное, двоичное. 16-ричное у тебя как раз сейчас.


--------------------
...
PM   Вверх
BIV
Дата 25.10.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



А зачем мне 2ное??? Мне надо просто из строки в число, так как это делают atoi (или itoa). Но только не в 10 ричном представлении, а в 16. Пишу в строку "00 hh a0", получаю в переменную а=00h hhh a0h, т.е. HEX
PM MAIL   Вверх
tzirechnoy
Дата 25.10.2012, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
А зачем мне 2ное???


Возьмите Кнута первый том, и прорешайте. Поскольку это ужас что у Вас в голове, и с этим надо что-то делать, если хотите программировать.

Во-первых, в 16-ричной записи нет буквы "h" (она появляется только в 18-ричной).

В-главных, Вы вообще не понимаете, что хранится в "обычных переменных". И как оно там хранится.
PM MAIL   Вверх
BIV
Дата 25.10.2012, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Цитата(tzirechnoy @  25.10.2012,  15:25 Найти цитируемый пост)
Возьмите Кнута первый том, и прорешайте. Поскольку это ужас что у Вас в голове, и с этим надо что-то делать, если хотите программировать.Во-первых, в 16-ричной записи нет буквы "h" (она появляется только в 18-ричной).В-главных, Вы вообще не понимаете, что хранится в "обычных переменных". И как оно там хранится.


Такое рассуждение, что как будто вы знаете на все 100% зачем мне это надо

Мне нужно ввести в строковую переменную этот 16-ричный код. С помощью стандартной функции (если она есть) перевести из этой строки в переменную для отправки по TCP клиенту. Клиент читает этот код и выполняет какую-то нужную мне операцию. Если я отправлю строку "00 аа ff", то клиенту придет не 00 аа ff, а что-то другое

Добавлено через 8 минут и 17 секунд
Мне нужно сделать что-то похожее на это

user posted image

Код там выведен в текстовом поле в виде строки. Мне надо обратное, т.е. из строки в переменную
PM MAIL   Вверх
tzirechnoy
Дата 25.10.2012, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
Такое рассуждение, что как будто вы знаете на все 100% зачем мне это надо


Если хотите программировать -- это абсолютно необходимо. И, судя по тому, что Вы на Си пытаетесь что-то отправить по TCP -- Вам это за каким-то чёртом нужно.

Впрочем, конечно, есть варианты: например, нанять программиста для этой работы.
PM MAIL   Вверх
BIV
Дата 25.10.2012, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Прочитайте, пожалуйста, 5 сообщение

Добавлено через 3 минуты и 32 секунды
Я хочу в текстовом поле написать буквами и цифрами 16 ричную последовательность. Перевести это написанное в HEX
PM MAIL   Вверх
BIV
Дата 25.10.2012, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Цитата(Earnest @ 25.10.2012,  14:10)
Например, strtol, с указанием правильной базы.
И это будет, конечно, не 16-ричное представление, а просто бинарное, двоичное. 16-ричное у тебя как раз сейчас.

Да,извините,я не так понял. Ну почти. Если в двойном, то
"11 ab ff" в 000100011010101111111111
полученное значение в переменную 
PM MAIL   Вверх
feodorv
Дата 25.10.2012, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 1
Всего: 45



Код

#include <stdio.h>

int charFromHex( char hex )
{
  if( hex >= '0' && hex <= '9' ) return hex - '0';
  if( hex >= 'A' && hex <= 'F' ) return hex - 'A' + 10;
  if( hex >= 'a' && hex <= 'f' ) return hex - 'a' + 10;
  return -1;
}

int strFromHex( unsigned char *bin, int maxsize, const char *str, const char **rest)
{
  int len = 0;

  for( ;; )
  {
    int v1, v2;

    if( len >= maxsize ) break;
    while( *str == ' ' ) str++;
    if( str[0] == '\0' || str[1] == '\0' ) break;

    v1 = charFromHex( str[0] );
    v2 = charFromHex( str[1] );
    if( v1 < 0 || v2 < 0 ) break;

    bin[len++] = (v1 << 4) + v2;
    str++;
    str++;
  }

  if( rest != NULL ) *rest = str;
  return len;
}

int main( void )
{
  char *input = "ff 11 27 9e Aa none";
  unsigned char output[3];
  int i, len;

  len = strFromHex( output, 3, input, NULL);

  for( i = 0; i < len; i++) printf( "%d %.2x\n", i, output[i]);
  return 0;
}



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
BIV
Дата 26.10.2012, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



То что надо, спасибо Вам огромное!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.