• 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 ?

+2 głosów
510 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 Mentor (355,240 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 (283,500 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 (256,660 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ź 3,317 wizyt
pytanie zadane 27 stycznia 2017 w C i C++ przez Pshemeg Nowicjusz (120 p.)
0 głosów
1 odpowiedź 3,612 wizyt
pytanie zadane 9 marca 2017 w C i C++ przez olsześ Gaduła (3,080 p.)
0 głosów
1 odpowiedź 2,846 wizyt

93,773 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,377 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...