| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Въпрос относно конвертиране http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=6538 |
Страница 1 от 2 |
| Автор: | perro_iv [ Вто Фев 10, 2009 2:20 pm ] |
| Заглавие: | Въпрос относно конвертиране |
Искам една char стойност да я конвертирам в int. Правя следното int p; p=atoi(char); и p си стои винаги 0; Нещо явно не вдявам? Става въпрос за PIC18F4550. |
|
| Автор: | Ники [ Вто Фев 10, 2009 2:39 pm ] |
| Заглавие: | |
char ch; int p; p=(int)ch; |
|
| Автор: | MYXATA [ Вто Фев 10, 2009 2:40 pm ] |
| Заглавие: | |
а проверил ли си char-а каква стойност има |
|
| Автор: | perro_iv [ Вто Фев 10, 2009 3:17 pm ] | |||||||||
| Заглавие: | ||||||||||
Във всеки случай не 48 ... |
||||||||||
| Автор: | perro_iv [ Вто Фев 10, 2009 3:22 pm ] | |||||||||
| Заглавие: | ||||||||||
Хе става бе Ами каква е идеята с тази ф-я: atoi Convert a string to a 16-bit signed integer. int atoi( const char * s ); Return Value: 16-bit signed integer for all strings in the range (-32768 to 32767). И защо не мога да я подкарам. Нещо бъркам типовете явно? |
||||||||||
| Автор: | Цецо [ Вто Фев 10, 2009 3:27 pm ] |
| Заглавие: | |
Не става щото atoi иска като параметър указател към char, пък ти му подаваш копие на самия char. По правилно е да надраскаш: p=atoi(&char). Ама горното въпреки че е ЩО ГОДЕ правилно "граматически" всъщност е голяма глупост. Идеята на тая функция е да преобразува от ASCII символи на число в самото число. |
|
| Автор: | perro_iv [ Вто Фев 10, 2009 3:50 pm ] | |||||||||
| Заглавие: | ||||||||||
Ами аз точно това искам да правя. Правя си едно приложение което получава команди от pc-то през USB-то(HID). Само че комуникацията е само в char формат, а пък аз немога да вникна изцяло в дефинирането на данните за да я променя и нямам много време, та като начало смятам да конвертирам от int в char и обратно. Така или иначе става въпрос за команди които са числа. Тепърва навлизам в областа на указателите и пойнтерите, и теоретично смятам, че нещата са ми ясни, ама ми липсва практика. Докато си правих разни малки приложения си мислех, че C-то ми е напълно ясно. Като се сблъсках с по-мащабни неща обработващи разни масиви от данни, разбрах, че има много да уча. |
||||||||||
| Автор: | Dimitar [ Вто Фев 10, 2009 5:45 pm ] |
| Заглавие: | |
На мен ми стана интересно как така бъзикаш USB-то, а не можеш да конвертираш прости неща. Ако имаш само един char, който е някакво число (от '0' до '9', което отговаря на 0х30 до 0х39) то тогава вместо да ползваш функции за преобразуване на стринг напиши следното просто нещо: i = char-0x30, което автоматично ти дава десетичното число, което е представено с ASCII кода си в променливата char. Винаги съм се чудил защо някои хора вместо първо да размигат един светодиод се хвърлят с главата напред направо в бетонната стена (USB-то) |
|
| Автор: | perro_iv [ Вто Фев 10, 2009 6:22 pm ] | |||||||||
| Заглавие: | ||||||||||
Ами когато стойността на числото е от 0 до 100? Аз това и правя размигвам светодиоди през USB-то, само че имам доста пропуски. В крайна сметка темата е в раздел Академия. А по отношение на интереса ти как бъзикам USB - с готов сорс, който само променям само че вече нямя нищо общо с оригинала си и все още работи |
||||||||||
| Автор: | Dimitar [ Вто Фев 10, 2009 6:30 pm ] | |||||||||
| Заглавие: | ||||||||||
Вместо да философстваш за целенето и кое как се наваксва, първо вземи почети малко
Няма как да имаш число представено с ASCII в char и да е по-голямо от 9. За да можеш да ползваш функцията atoi за стринг, който съдържа числото 100 ти трябват 4 байта, не само един char, които да имат следното съдаржание: 0x31 0x30 0x30 0x00 и тогава да дадеш на функцията като параметър поинтера към първия байт със стойност 0х31. А и байтовете трябва да са един след друг |
||||||||||
| Автор: | perro_iv [ Вто Фев 10, 2009 6:39 pm ] |
| Заглавие: | |
Първо тука не обсъждаме как работи USB-то! Второ попитах съвсем елементарни неща на които хората ми отговориха и си реших проблема! Трето благодаря за изчерпателния отговор! |
|
| Автор: | Dimitar [ Вто Фев 10, 2009 7:27 pm ] |
| Заглавие: | |
Супер, щом си решил проблема, но недей да разглеждаш темата като средство за решение само на твоя проблем, въпреки, че ти си и автора. Възможно е да я прочетат поне още 10 човека и те да искат да знаят какъв е правилния път, а не да повтарят чужди грешки |
|
| Автор: | 3aek [ Вто Фев 10, 2009 7:51 pm ] |
| Заглавие: | |
господ да благослови Майкрочип и техните FAE които ни дават кодове които не разбираме а модифицираме, а после се чудим защо електрониката не работи |
|
| Автор: | Реконструктор [ Вто Фев 10, 2009 8:41 pm ] | |||||||||
| Заглавие: | Re: Въпрос относно конвертиране | |||||||||
p = c - '0'; |
||||||||||
| Автор: | Cino [ Вто Фев 10, 2009 10:09 pm ] |
| Заглавие: | |
c&=0x0f; |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|