Archief - [JAVA] Decimal to hexadecimal (in byte array)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

yannick

Legacy Member
Beste,

Ik zou moeten weten hoe ik op de makkelijkste manier een barcode string (bv. 25678) naar een hexadecimale byte array kan "brengen". Deze barcode wordt ingevoerd in een tekstvak.

De byte array moet er zo uit zien (mocht ik het manueel doen, wat dus niet mogelijk is mits je niet op voorhand weet welke barcode wordt ingevuld):

byte b=new byte[4];
b[0]=(byte) 0x02;
b[1]=(byte) 0x05;
b[2]=(byte) 0x06;
b[3]=(byte) 0x07;
b[4]=(byte) 0x08;

Ik dacht om eerst elke char van de string in een int array te steken en zo elke member van deze array te converteren naar een hex, maar bij dit laatste weet ik niet goed hoe eraan moet beginnen.

Met vriendelijke groeten
Yannick Wellens

Fraggie

Legacy Member
Dat wordt toch altijd binair opgeslaan en als je ze terug oproept is dat in het 10 delig stelsel? Misschien moet je jezelf de vraag stellen of het wel opgeslaan moet worden als een hexadecimaal getal?

M.a.w. waarom moet het zo opgeslaan worden?

yannick

Legacy Member
Fraggie zei:
Dat wordt toch altijd binair opgeslaan en als je ze terug oproept is dat in het 10 delig stelsel? Misschien moet je jezelf de vraag stellen of het wel opgeslaan moet worden als een hexadecimaal getal?

M.a.w. waarom moet het zo opgeslaan worden?

Omdat ik werk aan een project met NFC enabled studentenkaarten. Ik moet iets op die kaart opslagen en dat moet in hexadecimale getallen zijn. Het moet via die byte array gebeuren die ik als voorbeeld heb gegeven.

forloRn_

Legacy Member
Je zult de String eerst moeten parsen naar een int en dan wat rekenen. Google vindt kant-en-klare oplossingen hoor.

BroodRooster

Legacy Member
Scanner s = new Scanner(System.in);
System.out.print("geef een string : ");
String source = s.next();
byte[] bytes = source.getBytes("UTF-8");
System.out.println("string to bytes : "+bytes);
String string = new String(bytes, "UTF-8");
System.out.println("byte to string : "+string);


hiermee kun je je string omzetten naar bytes en dan opnieuw naar string. ik denk dat dit hetgene is wat je zoekt

Fraggie

Legacy Member
yannick zei:
Omdat ik werk aan een project met NFC enabled studentenkaarten. Ik moet iets op die kaart opslagen en dat moet in hexadecimale getallen zijn. Het moet via die byte array gebeuren die ik als voorbeeld heb gegeven.
Maar die barcode splits je op in cijfer per cijfer, dus gezien je nooit boven de 9 zal komen, is de representatie toch altijd gelijk aan dat van het gewoon dec opslaan?

(9)16 = (9)10 = (000 1001)2
.. allemaal het zelfde ..
(0)16 = (0)10 = (000 0000)2

Of zie ik het verkeerd?

Ik zet nu bewust 7 bits bij een Java byte, omdat die altijd signed is?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan