25. oktober 2004 - 09:55Der er
18 kommentarer og 1 løsning
Hex til String
Hej jeg er igang med at lave et program der kan læse nogle "tags" fra en antenne. Problemet er at når jeg læser det tag, får jeg det tilbage i HEX kode. Hvordan får jeg det over i String?
Hex koden ser sådan her ud: 0x030080507A001001000004D02A
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
// look only at serial ports if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(DEFAULT_PORT)) { System.out.println("Found port " + DEFAULT_PORT);
portFound = true;
// open a connection to specified serial port try { serialPort = (SerialPort) portId.open("SimpleWrite", 2000); } catch (PortInUseException e) { System.out.println("Port in use."); continue; }
// set transfer rates, and various bits try { serialPort.setSerialPortParams( 230400, // default for Matrics readers SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) { }
for (int i = 0; i < message.length; i++) { out.write(message[i]); } out.flush(); try { // if no wait, no response available, may need tuning Thread.sleep(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } String result = "No read available."; try { byte input[] = new byte[inputStream.available()]; System.out.println("Result length: " + inputStream.available());
// TODO does it make correct conversion from int->byte here? or does it need to be read one int at a time? inputStream.read(input); result = new String(input);
} catch (IOException e) {
e.printStackTrace(); } return result; }
public static String decode(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); switch (c) { case '+': sb.append(' '); break; case '%': try { sb.append( (char) Integer.parseInt( s.substring(i + 1, i + 3), 16)); } catch (NumberFormatException e) { throw new IllegalArgumentException(); } i += 2; break; default: sb.append(c); break; } } // Undo conversion to external encoding String result = sb.toString(); try { byte[] inputBytes = result.getBytes("8859_1"); result = new String(inputBytes); } catch (UnsupportedEncodingException e) { // The system should always have 8859_1 } return result; }
hmm den sidste metode var noget jeg lige prøvede dvs. public static String decode, virkede bare ikke som jeg ville have den til :/ Så bare se bort fra den.
Well jeg tror ikke du behøver alligevel, har fået dem jeg skriver projekt for, til at kigge på koden og rette det til. Så burde virke når jeg engang får koden tilbage, men ellers mange tak for hjælpen! :)
np.. du velkommen til at smide koden herind bagefter.. så den kan gavne andre evt.;)
Synes godt om
Ny brugerNybegynder
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.