• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Z wartości DEC na HEX - najprościej ?

Object Storage Arubacloud
+2 głosów
117 wizyt
pytanie zadane 24 sierpnia 2023 w C# przez Mati336 Użytkownik (560 p.)

Witam! Napisałem sobie taki mały konwerter zmieniający mi wartość dziesiętną na szesnastkową:

private void button1_Click(object sender, EventArgs e)
        {        
            int intValue = int.Parse(textBox1.Text);

            string hexValue = intValue.ToString("X4");

            string name = Convert.ToString(hexValue);
            textBox2.Text = name;
        }

Czyli po kliknięciu w Button pobiera wartość z textBox1 i konwertuje na szesnastkowy i wrzuca do texbox2 (dopisuje zera gdy są przed wartością np. z C na 000C)

Chciałbym jeszcze żeby do textbox3 przerabiało mi z wartości dziesiętnej do binarnej (też 4 znaki) tylko kombinuje i ciagle mam jakiś błąd. Jak to można łatwo zrobić?

 

komentarz 24 sierpnia 2023 przez adrian17 Ekspert (344,860 p.)

string name = Convert.ToString(hexValue);

Ta linia nic przydatnego nie robi, sam zapisałeś że `hex` to już jest string.

(btw nie dopisuj `Value` wszędzie, to trochę masło maślane ;) )

tylko kombinuje i ciagle mam jakiś błąd

Ok, ale... jaki błąd?

3 odpowiedzi

0 głosów
odpowiedź 24 sierpnia 2023 przez Mati336 Użytkownik (560 p.)

Ok teraz zaskoczyło

            int intValue = int.Parse(textBox1.Text);
            string hexValue = intValue.ToString("X4");
            textBox2.Text = hexValue;
            string name2 = Convert.ToString(Convert.ToInt64(hexValue, 16), 2);
            textBox3.Text = name2;

tylko nie wiem jak zrobić żeby dodawało zera z przodu jak jest mniej niż 4 cyfry

0 głosów
odpowiedź 24 sierpnia 2023 przez Wiciorny Ekspert (270,190 p.)

Do swojego kodu możesz użyć funkcji PadLeft na wynikowej wartości binarnej, jeśli zawsze chcesz wyświetlać wspomniane zera z przodu jak jest mniej niz 4 cyfry 

 

int intValue = int.Parse(textBox1.Text);
string hexValue = intValue.ToString("X4");
textBox2.Text = hexValue;
string name2 = Convert.ToString(Convert.ToInt64(hexValue, 16), 2).PadLeft(4, '0');
textBox3.Text = name2;

za pomocą  tej funkcji  doprowadzić wartość binarną do 4 cyfr, dodając zera z przodu, dokładnie tak jak opisałeś zamierzenie 

0 głosów
odpowiedź 25 sierpnia 2023 przez VBService Ekspert (253,400 p.)

... kliknięciu w Button pobiera wartość z textBox1

 

... pobiera wartość z textBox1 i konwertuje na szesnastkowy

 ... przerabiało mi z wartości dziesiętnej do binarnej

w obu przypadkach możesz skorzystać z prostego zapisu z użyciem Convert.ToString

textBox2.Text = Convert.ToString(decimalNumber, 16).PadLeft(4, '0'); // szesnastkowy
textBox3.Text = Convert.ToString(decimalNumber, 2).PadLeft(4, '0');  // binarny

Obie te linie kodu opierają się na wbudowanym w język C# mechanizmie konwersji liczb między różnymi systemami liczbowymi. W efekcie uzyskujemy stringi reprezentujące liczbę w danym systemie.

 

Przykład

        private void button1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox1.Text.Trim()))
            {
                try
                {
                    int decimalNumber = int.Parse(textBox1.Text.Trim());
                    textBox2.Text = Convert.ToString(decimalNumber, 16).PadLeft(4, '0');
                    textBox3.Text = Convert.ToString(decimalNumber, 2).PadLeft(4, '0');
                }
                catch (FormatException)
                {
                    MessageBox.Show("Wprowadzona wartość nie jest poprawną liczbą dziesiętną.");
                }
            }
            else
            {
                MessageBox.Show("Wprowadź liczbę dziesiętną do konwersji.");
            }
        }

 

komentarz 28 sierpnia 2023 przez Mati336 Użytkownik (560 p.)
Super! O to mi chodziło... Dzięki za pomoc!

Podobne pytania

0 głosów
1 odpowiedź 2,907 wizyt
pytanie zadane 27 stycznia 2017 w C i C++ przez Pshemeg Nowicjusz (120 p.)
0 głosów
1 odpowiedź 3,048 wizyt
pytanie zadane 9 marca 2017 w C i C++ przez olsześ Gaduła (3,080 p.)
0 głosów
1 odpowiedź 2,089 wizyt

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...