Just nu i M3-nätverket
Gå till innehåll

Plocka hex en i taget ur dec


simkort

Rekommendera Poster

 

private void button1_Click(object sender, System.EventArgs e)
 {
  int dec = 2010;
  string hex= dec.ToString("X");
  int HexTillDec = int.Parse(hex, System.Globalization.NumberStyles.HexNumber);
          	MessageBox.Show(hex);

  MessageBox.Show("" + HexTillDec);

 }

Hur gör man om man vill plocka ut en"hex" i taget ur dec så man får

alla i en sträng ?

 

Alltså en i taget var frågan

 

 

 

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

Förstår tyvärr inte trots förtydligande. Kan du ge ett exempel?

 

För att plocka ut en siffra i taget så får du göra om talet till en string och sedan använda metoden Substring().

Länk till kommentar
Dela på andra webbplatser

FF = 15*(16^1) + 15*(16^0) = 255 kan man förstå.

 

Men om man har 255 hur räknar man då för att få FF

 

 

Länk till kommentar
Dela på andra webbplatser

Och tänka lite på vad du har.

 

 

Det var ju ingen hjälp, jag hade tänkt mig ha basen 28(alfabetet)

eller bas 38 osv.

 

Nu börjar nog du tänka till.

 

 

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal
Men om man har 255 hur räknar man då för att få FF

 

Du använder även då talen 16^0, 16^1, 16^2 osv...

 

Om du har ett 32-bitarstal så börjar du med 16^8:

 

Utför en heltalsdivision med talet du vill konvertera och 16^8. Resultatet är första siffran och resten dividerar du med 16^7 vars resultat blir andra siffran och så fortsätter du att dela den restenn med 16^6 osv...

 

Om du har 255 så dividerar du det med 16^1 och får 15 som resultat och 15 som rest. Första siffran blir alltså F (15) och resten divideras med 16^0 och blir också F (15)...

 

Vi kan ta ett annat tal som exempel:

 

524

 

16^2 = 256

16^1 = 16

16^0 = 1

 

524 / 256 = 2, rest 12

12 / 16 = 0, rest 12

12 / 1 = C, rest 0

 

524 = 0x20C

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Här kommer en implementering av Thomas algoritm

 

        private void GetHex(int num)
       {
           StringBuilder hex = new StringBuilder();
           int op = (int)Math.Pow(2,16);
           int remainder=num;
           while (op>0)
           {
               int nybble = (int)Math.Floor((decimal)(remainder / op));
               remainder = (int)(remainder % op);
               op /= 16;
               hex.Append((nybble < 10) ? nybble.ToString() : ((char)(nybble + 55)).ToString());
           }
           MessageBox.Show(hex.ToString());
       }

Länk till kommentar
Dela på andra webbplatser

Bas 28

 

ABC = 1*(28^2)+2*(28^1)+3*(28^0)= 784+56+3= 843

 

Alltså stå talet 843 för ABC om man vet att A har position 1

B har position 2 och c har position 3, i bas 28

Har du Talet 843 så kan du få ut ABC

 

Tack för alla svar!

 

Kolla om ABC fungerar!

 

 

Länk till kommentar
Dela på andra webbplatser

private void button1_Click(object sender, System.EventArgs e) 
 { 
  string str1 = "ABCDEFGHIJKLMNOPGRSTUVWXYZÅÄÖ"; 
  double i = str1.Length; 
 { 
  MessageBox.Show("Stränglängden är " + i + " Position 0 är  " + str1[0]); 
 } 
 } 

 

 

 

Datorn vill ha noll som utgångspunkt i vilken A befinner sig här.

 

 

Är det någon som fått AnjaMOon:s implementering att fungera ?

 

 

Länk till kommentar
Dela på andra webbplatser

private void button1_Click(object sender, System.EventArgs e)
 {
  MessageBox.Show(String.Format("{0:x50}",100000000000)); 
  //hundra miljarder til hex
  //50 tecken 
 }

 

 

Så visst kan man arbeta med enormt stora tal.

Länk till kommentar
Dela på andra webbplatser

Är det någon som fått AnjaMOon:s implementering att fungera ?

Anjunas implementering funkar väl för det den är avsedd, dvs att omvandla en integer till en utskrift av en sträng av hexadecimala tecken. Får du något felmeddelande eller anser du att den räknar fel?

Länk till kommentar
Dela på andra webbplatser

ulong nDec = 10000000000000000000;

 

 

Sätt in nDec där du ska(där det står en miljard med siffror).

Det är vad jag menar är en implemetering av rang.

 

Kunde inte ens kompilera MOON:s kod

 

Det är lite som med "Kejsarens nya kläder" vissa säger O vad fint,

Jag kunde inte ens njuta av det fina.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Okej, om du vill hantera ulong i stället för int så får du ju ändra inparameterns typ och den initiala storleken på op i Anjunas kod. I ditt första inlägg så framgår det att det gäller int och att du vill plocka ut en hex-siffra i taget och samla dem till en sträng, om du ändrar dig så får du ju berätta det för det är ingen här som är tankeläsare. Om du vill ha hjälp att få Anjunas kod att fungera så får du ju berätta vad du får för kompileringsfel.

Länk till kommentar
Dela på andra webbplatser

hej!

Cecilia! du är bra på flera sätt.

Du är en bra moderator som inte angriper.

Jag är inte ens en medioker programmerare,

men har vilda ideer som kanske för programering

framåt i Sverige.

Länk till kommentar
Dela på andra webbplatser

Tack!

När det gäller programmering så är det väl lite som när barn växer upp. Man måste lära sig saker i rätt ordning för att det ska fungera. Det går inte att springa innan man lärt sig gå och programmering går mycket bättre att förstå om man lär sig det stegvis. Har du någon sorts lärobok att följa?

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Härlig mentalitet!

Skulle jag vara nån chef på nån kärnkraftreaktor, skulle jag lätt anställa dig. :/

Jojo, sedan lär den komplicerade kärnkraftsfrågan lösa sig självt ganska snabbt, om än på ett oönskat sätt.

 

Till "simkort": Varför förklarar du inte bara vad du får för kompileringsfel istället för att sopa den hjälp du får under mattan? Med den metodiken kommer du inte föra din kunskap framåt, än mindre "Sveriges programmering"

 

Vidare låter hälften av dina "frågor" mer som de avslutande tankarna på längre resonemang som du fört med dig själv i huvudet. Det saknas så mycket information för att förstå vad du egentligen är ute efter. Det är lite som att prata med Rainman.

 

Innan du skriver din nästa fråga härinne, lägg den åt sidan ett tag och läs den sedan igen lite senare. Då kommer du nog själv se att det saknas en del ord för att det hela skall framstå som en faktisk och förståelig fråga.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...