Avatar billede casualty Nybegynder
18. maj 2004 - 21:41 Der er 16 kommentarer og
1 løsning

Konvertering fra byte til decimal mm.

Hej... jeg kunne godt tænke mig at vide følgende:

1) Jeg har et byteArray med to pladser. Hvordan får jeg fat i
  den decimale værdi af de to bytes (int32/int64/long)?

2) Hvordan konverterer jeg fra decimal til hex?

3) Hvordan konverterer jeg fra hex til decimal?

4) Hvordan konverterer jeg fra byte til en string med bits?

5) Hvordan konverterer jeg fra byte til string?

Mvh Casualty
Avatar billede arne_v Ekspert
18. maj 2004 - 22:06 #1
re 1)

int i = (b[1] << 8) | b[0];

re 2)

string sv = iv.ToString("X");

re 3)

int iv = int.Parse(sv, NumberStyles.HexNumber);

re 4 & 5)

forklar nærmere
Avatar billede arne_v Ekspert
18. maj 2004 - 22:07 #2
2 & 3 er iøvrigt her:

http://www.eksperten.dk/artikler/277
Avatar billede erikjacobsen Ekspert
18. maj 2004 - 22:15 #3
4) Mener du dette?

      byte a = 55;
      string s = Convert.ToString (a, 2);
      Console.WriteLine(s);
Avatar billede casualty Nybegynder
18. maj 2004 - 22:23 #4
Ok
4) jeg har en byte der er 4 Jeg vil gerne have en string = "0100"

5) Ved egentlig ikke hvad jeg mente, så bare glem det indtil videre
Avatar billede casualty Nybegynder
18. maj 2004 - 22:24 #5
Ok.. Tak Erik Jacobsen... det var det jeg mente..
Avatar billede casualty Nybegynder
18. maj 2004 - 22:26 #6
Og tak til arne. Lægger i begge et svar?
Avatar billede erikjacobsen Ekspert
18. maj 2004 - 22:31 #7
Ingen svar fra mig - jeg samler ikke på point.

Men du får nu kun "100" med min stump kode. Skal du have "0100" eller "00000100" ?
Avatar billede casualty Nybegynder
18. maj 2004 - 22:32 #8
Gerne 00000100
Avatar billede casualty Nybegynder
18. maj 2004 - 22:33 #9
men jeg kan jo selv tjekke længden og fylde op med nuller :)
Avatar billede arne_v Ekspert
18. maj 2004 - 23:01 #10
Ellers kan I kode jeres egen.

Det må kunne gøres på 717 forskellige måder.

To tilfældige:

    public static string ToBin1(byte b)
    {
        return (((b & 128) != 0) ? "1" : "0") +
              (((b & 64) != 0) ? "1" : "0") +
              (((b & 32) != 0) ? "1" : "0") +
              (((b & 16) != 0) ? "1" : "0") +
              (((b & 8) != 0) ? "1" : "0") +
              (((b & 4) != 0) ? "1" : "0") +
              (((b & 2) != 0) ? "1" : "0") +
              (((b & 1) != 0) ? "1" : "0");
    }
    public static string ToBin2(byte b)
    {
        string res = "";
        int tmp = b;
        for(int i = 0; i < 8; i++) {
            res = tmp % 2 + res;
            tmp /= 2;
        }
        return res;
    }
Avatar billede arne_v Ekspert
18. maj 2004 - 23:01 #11
svar
Avatar billede erikjacobsen Ekspert
18. maj 2004 - 23:05 #12
Jeg fandt også lige een:

    public static string ToBinary(byte c) {
      StringBuilder result = new StringBuilder();
      for (int i=0;i<8;i++) {
        if ((c & 1)==1) {
      result.Insert(0,"1");
    } else {
      result.Insert(0,"0");
    }
        c=(byte)(c>>1);
      }
      return result.ToString();
    }
Avatar billede casualty Nybegynder
29. maj 2004 - 01:20 #13
Arne. Hvad er det der sker her?
int i = (b[1] << 8) | b[0];

jeg lægger 2 bytes sammen men jeg forstår ikke logikken i det... Og hvad gør jeg hvis der skal lægges flere bytes end 2?
Avatar billede arne_v Ekspert
29. maj 2004 - 09:45 #14
Du skal tænke bits

b[1] = xxxxxxxx
b[0] = yyyyyyyy
b[1] << 8 = xxxxxxxx << 8 = xxxxxxxx00000000
(b[1] << 8) | b[0] = xxxxxxxx00000000 | yyyyyyyy ? xxxxxxxxyyyyyyyy

Du kan lave det samme med flere bytes end 2.

Husk at være opmærksom på hvilken byte der er mest signifikant den første
eller den sidste.

Jeg har antaget den sidste. Det er native på x86 CPU'er.
Avatar billede casualty Nybegynder
31. maj 2004 - 13:08 #15
Jeg forstår det stadig ikke? Hvad betyder "<<" og hvad betyder "|"(pipe)?

Kan du ikke skrive et eksempel hvor man lægger 4 bytes sammen?
Avatar billede arne_v Ekspert
31. maj 2004 - 13:50 #16
<< er shift left
| er binær OR
Avatar billede arne_v Ekspert
31. maj 2004 - 13:52 #17
(b[3] << 24) | (b[2] << 16) | (b[1] << 8) | b[0]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester