04. juli 2006 - 18:08Der er
5 kommentarer og 2 løsninger
Fra string( hex numre fra en mac addr) til byte[6]
Yo,
Hvad er den nemmeste måde få lavet en MAC om til at byte[]...
Har følgende: 00137218ECB2.... og det skulle så gerne blive til: 0 19 114 24 236 178
Bruger følgende lige nu: byte[] myByte = new byte[6]; for (int i = 0; i < 6; i++) { myByte[i] = byte.Parse(mac.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber); }
havde kigget på System.Text.Encoding.xxx.GetBytes() men det giver mig en byte for hvert tegn, altså en byte[12] og det dur ik'...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
For at der skal "være" plads nok, bruger jeg en Int64 (= long) i stedet for en int (= Int32). Kunne også have brugt ulong som Arne_v (egentlig et mere naturligt valg idet der jo aldrig kan blive tale om et negativt tal alligevel). Den decimale værdi er i dette tilfælde: 83518614706.
For at konvertere MAC-adressen til dens byte-form er det centralt at vide at repræsentationen ”0 19 114 24 236 178” skal læses som tallet:
// Konversion til byte-array. byte[] macByte = new byte[6]; for (int pos = 5; pos >= 0; pos--) { macByte[pos] = (byte) (macInt % 256); macInt /= 256; }
Jeg har valgt at lægge værdierne i byte-arrayet i denne rækkefølge:
(0, 19, 114, 24, 236, 178)
En anden, og faktisk mere naturlig måde indenfor programmering, ville være denne form:
(178, 236, 24, 114, 19, 0)
For at finde de enkelte bytes i tallet 83518614706, benytter jeg dels ”%” (modulus, eller ”resten af division med”), og dels ”/” som i dette tilfælde er heltalsdivision (fordi at ingen af dividenderne er floats).
Værdien af:
83518614706 % 256
er lig med ”resten af 83518614706 ved division med 256”. I dette tilfælde giver det os værdien 178 som er det ”ciffer” som ligger længst til højre i byte-arrayet:
Efter at have fundet “cifret” via %, divideres der med 256 (husk at ”macInt /= 256” skal læses som ”macInt = macInt / 256”). Formålet med dette er at reducere tallet – populært sagt at smide 256-potensen yderst til højre væk. I alt ser det nogenlunde sådan her ud:
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.