Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. else res+=(int*)hex[i]*pow(16,k-i-1);--что то эта строка не работает. Или не так привожу типы или else надо как то иначе употребить. С буквами в шестнадцятиричном виде работает на отлично-например-0хFFFF Модератор: Используйте тег SRC для оформления исходника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 03:38 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
В (int*)hex[i]*pow(16,k-i-1);---(int*)--эта часть лишняя просто разные варианты испытывал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 03:40 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
#include <iostream> #include <string.h> #include <math.h> using namespace std; int hexdec (char * hex) { int k=strlen(hex); int i; int res=0; for (i=2;i<k;i++) {if (hex[i]=='F') res+=15*pow(16,k-i-1); else if (hex[i]=='E') res+=14*pow(16,k-i-1); else if (hex[i]=='D') res+=13*pow(16,k-i-1); else if (hex[i]=='C') res+=12*pow(16,k-i-1); else if (hex[i]=='B') res+=11*pow(16,k-i-1); else if (hex[i]=='A') res+=10*pow(16,k-i-1); else if (hex[i]>=0 && hex[i]<=9) res+=hex[i]*pow(16,k-i-1);// не читает цыфры числа только буквы-то есть что то с приведением типов } return res;} int main() { cout << hexdec("0x1F")<< endl; return 0; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 04:12 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 05:45 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
m_Sla, Слева направо намного проще, понятнее и быстрее :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 10:55 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Там речь идет о элементах масива чар. Что достаточно будет hех[i]-'0'. Это не одиночный символ. Потом там коэф.=1 и 16. Там кроме того не одна буква А а А..F. Кроме того важена степень с ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 12:51 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stut, Стесняюсь спросить. Русский ваш не родной язык? Сложно понять о чем вы пытаетесь спросить. Может как-то на пальцах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 12:59 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stut, Правильно. Вот это может не сработать: Код: plaintext 1. Для надежности надо писать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 13:01 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСлева направо намного проще, понятнее и быстрее :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Не возьмет 0x stut Код: plaintext 1. stut, предлагаю самому понять как работает алгоритм Anatoly Moskovsky Немного подскажу: 1. Считается так 3B97 = (((3 * 16 + 11) * 16 + 9) *16 + 7 2. res <<= 4; это умножить на 16 3. сам допили чтоб 0x не обрабатывалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 13:16 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyДля надежности надо писать так: Нельзя так же забывать о флуктуациях в шине, поэтому не все операции присваивания проходят с первого раза. Для надежности добавляется простая проверка: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 13:17 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Dima TНе возьмет 0x По большому счету должен быть еще один уровень вызова, который по префиксу определяет что вызвать: hexdec, octdec, decdec.... и выдавать ошибку если префикс неверный. Иначе что слева что справа парсить строку - все равно будет всякий мусор неверно интерпретировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 13:48 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Все фигня, Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 14:54 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stutelse if (hex[i]>=0 && hex[i]<=9) res+=hex[i]*pow(16,k-i-1);// не читает цыфры числа только буквы-то есть что то с Ты чё, так нельзя... '0' на самом деле равен сорока восьми, а '9' - пятидесяти семи... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 15:11 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
?Ты чё, так нельзя... '0' на самом деле равен сорока восьми, а '9' - пятидесяти семи... :)Причем самое смешное, что это вовсе не шутка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 15:13 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Да. Символ ноль '0' имеет шестнадцатиричный код 0x30 в кодировке ASCII или 48 в десятичной системе. Этим можно пользоваться. Но для символов старше 0x7f это опасно т.к. мы уходим в национальные кодировки которые могут на экране выглядеть одниаково но иметь разные коды (прим: 1251,koi-8,cp866). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 16:02 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Да проблема уже давно решилась. res+=hex[i]*pow..надо заменить на hex[i]-'0' и все работает. Что то даже очень просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 19:23 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Точнее хекс-итэ надо заменить, а перед пов поставить 16. А я то думал почему там такие большие числа получаются а '2' считалось 50, например. Очень хорошая прога получилась. Может надо тему переименовать: как перевести число из 16 в 10-чную систему исчисления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 19:40 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stutМожет надо тему переименовать: как перевести число из 16 в 10-чную систему исчисления. Лучше назвать "как не надо переводить" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 22:57 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, в смысле, а что не работает? Или это принцип такой. Я бы здесь не публиковал и не старался сделать свою если бы в нете была готовая. И работающая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 12:44 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stutв смысле, а что не работает? вызов pow() в конверторе счисления - это пример того как не надо делать. Даже если "работает" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 13:05 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stut, тебе же уже указали на strtok - она делает ровно то, что ты хотел. почему этот вариант не использовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 13:47 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Анатолий Широковstrtok strtol ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 14:09 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
Strlok-не использовал эту команду никогда. И при чем она здесь. Я вот что хотел узнать что значит цикл. Первые два параметра: for (;*ptr;++ptr)-то есть пока есть указатель на строку. Ну а начальный параметр, где цикл начинается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 16:05 |
|
||
|
Как правильно привести тип в функции конвертации системы исчисления
|
|||
|---|---|---|---|
|
#18+
stut где цикл начинается? где-то выше по коду Код: plaintext 1. В примере передается в параметрах Anatoly Moskovsky Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 16:28 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38562426&tid=2019667]: |
0ms |
get settings: |
15ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 304ms |
| total: | 475ms |

| 0 / 0 |
