Loading...
Simooo93 avatar Simooo93 81 Точки

Hexademical to Decimal

Здравейте, 

Исках да попитам, ако може да ми дадете малко пояснение какво точно е объркано в кода. Използвам съм конкретен стринг, за да е по-лесно в началото. Има печатане след стринга, за да се уверя, функцията работи като хората, а също така печатах hex[0], hex [1] .. Но, когато го сложа във for цикъла подчертава червено "has some invalid arguments". 

Въпроса защо не иска да запали във for цикъла при положение, че не е просто локална променлива ?

И също така защо метода ми отхвърля стринга ?

http://pastebin.com/z19ZCSju

 

ModEdit: Моля прочети правилата на форума преди да пускаш нови теми.

Тагове:
0
Programming Basics 21/06/2015 16:36:45
zdravko7 avatar zdravko7 63 Точки

Здравей,

For цикълът ти гърми, защото почваш от hex.Length - 1 и увеличаваш i++. Трябва или да въртиш цикъла от 0 до големината - 1 или да почнеш от големината - 1 и да намаляваш i--

Провери също така дали правилно convert-ваш типовете данни, защото ако слагаш индексация на string, резултатът ще ти е char. Ако искаш да ползваш integer стойността на char-a просто го cast-ваш   (int) char_value.

1
21/06/2015 17:02:54
Simooo93 avatar Simooo93 81 Точки

Благодаря за съвета :) 

For цикълът беше сбъркан от недооглеждане, но не знаех, че индексацията на string ще ми върне char. Кода вече работи, ако някой се интересува да го види:

http://pastebin.com/x1UzcQg9

0
zdravko7 avatar zdravko7 63 Точки

Радвам се, че работи :)

Реално погледнато можеш да разглеждаш един стринг като един обикновен масив от char-ове и затова като индексираш string-а получаваш елемент char.

0
Kosta.Kanev avatar Kosta.Kanev 27 Точки

Привет.

Всъщност при метода HexLettersToDecimal връщаната стойност е стринг както и приемания аргумент, но ти му подаваш символ на дадена позиция в стринг (hex[ i ]) т.е подаваш му 'char'. Другото което забелязах е ,че когато парсваш от стринг към цяло число функцията int.Parse() очаква също стринг, но както казахме hex[ i ] e от тип 'char'.

Поздрави.

1
22/06/2015 13:47:40
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Симеоне,

използването на

element = hex[i] - '0';

е много добра идея, но може да се приложи и към A, B, C, D, E, F цифрите на шестнадесетичното число:

            if (hex[i] > '9')
            {
                element = hex[i] - '7';
                // example: 'A' = 65 (ASCII code); '7' = 55; hence 'A' - '7' = 10, 
                // which is exactly the decimal representation of the digit A
            }

С такава оптимизация решението ти става по-кратко: http://pastebin.com/tJ6TvM5G

2
Simooo93 avatar Simooo93 81 Точки

Супер, изобщо не съм се замислял, че мога да си съкратя толкова решението blush,

Много благодаря за изчерпателните отговори.

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Виделине,

Ако ще говорим за универсална програма за превръщане, от всяка бройна система към всяка друга (двоична, осмична, десетична, шестнадесетична), ето една идея (извинявам се за comments overkill-a, старо домашно от минали времена).

Може да провериш дали би работила и за нестандартни, измислени, бройни системи - четвъртична, двадасетична - има такива задачи по C#, но не помня дали точно този алгоритъм съм ползвала за тях.

-2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.