Loading...
KristianVasilev avatar KristianVasilev 6 Точки

[Homework] C# Basics - Primitive Data Types and Variables - Problem {3} - Variable in Hexadecimal Format

Здравейте. Прочетох условието на задачата над 30 пъти, но така и не го разбрах. В смисъл разбрах, че трябва да декларираме променлива съдържаща числото 254 в нея и да я превърнем в hexadecimal формат. До тук всичко е наред, но идва и проблема, а именно той е КАК ?! Напълно възможно е по време на лекцията да съм се разсеял и да не съм слушал в тази част, но просто не ми е ясна и реших да питам.

Намерих тази таблица, но още не ми е ясно как става, тъй като в условието пише да използваме калкулатора на операционната с-ма.

Ето и задачата:

Problem 1.       Variable in Hexadecimal Format

Declare an integer variable and assign it with the value 254 in hexadecimal format (0x##). Use Windows Calculator to find its hexadecimal representation. Print the variable and ensure that the result is “254”.

Тагове:
1
Programming Basics 26/09/2014 16:19:11
Valleri avatar Valleri 304 Точки

Здравей, в C# можеш да инициализираш променливите с hexadecimal, ето така например: "int a = 0x123f;" 

4
kraynov avatar kraynov 19 Точки

За да намериш шестнадесетичното изражение на десетично число (в случая 254), влез в калкулатора, от там в горния ляв ъгъл даваш на View и избираш Programmer. После от лявата част на калкулатора по средата има 4 отметки. Натискаш на отметката Dec (decimal) пишеш числото което искаш да превърнеш в hexadecimal и след това пак отляво на калкулатора даваш отметка на Hex(hexadecimal)- това ще превърне десетичното число в шестнадесетично. За да го изпишеш като число слагаш 0x  и пишеш шестнадесетичият му вариант.   

За конкретния пример с 254 става 0xFE

18
KristianVasilev avatar KristianVasilev 6 Точки

Точно това ме интересуваше, благодаря !!

0
desislavaTsvetkova6 avatar desislavaTsvetkova6 3 Точки

Или може да пишеш в Google: decimal to hexadecimal, първото, което излиза е Converter ;)

2
PetkoKolenichev avatar PetkoKolenichev 15 Точки

Здравей,

не винаги калкулатора е под ръка. ето как да го сметнеш на ум:

представяме десетичнити числа в шестнайсетични така -

десетични  шестнайсетични
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
десетични  шестнайсетични
9 9
10 А
11 B
12 C
13 D
14 E
15 F
   
   

таблица 1. представяне на шестнайсетични числа в десетични

 

За да разбереш от колко символа е щестнайсетичното число представи си 16 на 2-ра, 16 на 1 и 16 на 0-ва. Ако дестичното число е по-малко от 256(16 на 2-ра) то шестнайсетичното число е от два символа. В нашия случай 254 е по-малко от 256, значи търсеното шестнайсетично число е от два символа. Сега трябва да видим колко по 16 от числата в таблица 1 дава най-близко до 254.

16 * 15 = 240. Значи най-лявия шестнайсетични символ е F

254 - 240 = 14. Значи най-десния шестнайсетични символ е Е

254 в шестнайсетичен вид е  0хFE

 

Поздрави,

12
23/09/2014 10:15:21
Amaurea avatar Amaurea 9 Точки

Здравейте!

И аз имам въпрос относно тази задача.

 

От нас се иска да въведем 254 в hexadecimal формат (0xFE) и да го изведем като decimal формат (254). Правилно ли съм разбрала? :)

1
KristianVasilev avatar KristianVasilev 6 Точки

Да, точно така. 

0
Demarkas avatar Demarkas 2 Точки

Дамммм :)

0
Ivan.Nikolov avatar Ivan.Nikolov 8 Точки

Здравей,
аз също съм Начинаещ (с главно "Н" хах), но след млако мислене, не ми се отдава често, и ровене в Google ето моя резултат и как стигнах до конвертирането в (Hex). 
Разбира се най-бързо и удобно е с Windows calculator-а, но не е лошо да се знае как става, има и други начини.

using System;
   class Program
    {
      static void Main()
       {
          int numberInHex = 0xFE;
          Console.WriteLine(numberInHex);

 

          /*DIVISION    RESULT    REMAINDER             (in HEX)
               254 / 16       15             0,875*16 = 14 =      E
               15 / 16          0              0,9375*16 = 15 =    F

                                              ANSWER FE
         */
       }
   }

Надявам се съм бил полезен със скромните си "знания".

2
26/09/2014 16:01:28
BorisSimeonov avatar BorisSimeonov 26 Точки

Ето го и моето малко разширено решение на проблема. За него съм използвал метода ToString() с параметър в скобите "X", който връща шеснадесетичното представяне на десетичното число.


    static void Main(string[] args)
    {
        int dec = 254;
        string hexidecimal = dec.ToString("X");
        int var = 0xFE;
        Console.WriteLine("Hexidecimal value of {0} is: 0x{1}\r\n{2}.", dec, hexidecimal, var);
    }

1
03/11/2014 13:20:22
tr31ze avatar tr31ze 5 Точки

Предлагам ти и един малко по-съкратен вариант на същото нещо: 

static void Main(string[] args)
{
     int numberValue = (0xFE);
     Console.WriteLine("Lol, did yu see that -----> Decimal : {0} / Hex: 0x{0:X}",numberValue);
}


4
BorisSimeonov avatar BorisSimeonov 26 Точки

Наистина много добро и изчистено решение tr31ze. Напълно бях изключил за този "format specifier".

0
06/11/2014 17:07:32
MajenKwaad avatar MajenKwaad 6 Точки

Да извинявам се че изкопавам тази тема от дълбините ( ама гуугъл ми каза така да направя ) 

Аз пък го направих по друг начин с точно 2 реда та искам да попитам проблем ли е? Понеже резултата си ми излиза 254 както трябва да си е.

Смисъл, конвертирах си числото 254 в калкулатора и става -- > FE   във VS трябва да се изпише ( 0хFE ) 
Та аз написах ето това и стана.

{
    static void Main()
    {
        int a = 0xFE;
        Console.WriteLine(a);
    }
}

2
mgerin avatar mgerin 4 Точки

Аз също го направих по този начин, след което си казах, че нещо прекалено лесно излезе и се усъмних в решението си. Реших да търся в Гугъл и той ме прати точно тук. В крайна сметка може ли да се използва това като решение? В условието е споменато да се използва калкулатор, така че предполагам не трябва да го изчисляваме с код и в този ред на мисли решена по този начин, задачата е вярна, но при всички случаи ли конзолата ще отпечата 254 или това зависи от настройките и на някой компютър ще излезе 0хFE?

0
vani4ka66 avatar vani4ka66 24 Точки

   Ето го и моето решение: 

 

            int numberHex = 0xFE;
            int numberDecimal;

            numberDecimal = numberHex;

            Console.WriteLine(numberDecimal);  // и ти дава 254

0
alex.mitev avatar alex.mitev 20 Точки

Има няколко начина. При всички случаи обаче, 16-тичната репрезентация трябва да е от type string. 

int num = 254;

string hexNum = num.ToString("X");

може също:

string hexNum = Convert.ToString(num, 16);

Може и с плейсхолдер, но на мен лично тези ми се виждат по-лесни.

Дано помогне.

0
09/11/2015 09:54:38
minchev_su avatar minchev_su 3 Точки

Ето ви и моето решение :)

https://pastebin.com/YnBRxqhQ

0
chrisBG69 avatar chrisBG69 29 Точки

string hex = Console.ReadLine();
            int result = Convert.ToInt32(hex, 16);

            Console.WriteLine(result);

 

Това е най-лесното решение на тази задача :)

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