1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Java unsigned Byte 0 - 255

Dieses Thema im Forum "PHP & Co." wurde erstellt von Datschi, 31.10.08.

  1. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Hi At'er.

    Mein Problem im Zusammenhang mit der Entwicklung eines Transformationstools XML -> uraltes C-Format ist folgendes:

    Die Inhalte der XML-Datei können Umlaute enthalten. Das Format, in das ich die Inhalte bringen soll auch. Problem dabei ist, dass im Folgeformat jedes Zeichen nur 1 Byte groß ist.
    Also ein unsigned Byte (0 ... 255).
    Das kann Java aber nicht. Bin mit meinem Latein am Ende, weil ein Zeichen im Folgeformat nunmal nicht größer als ein Byte sein darf.
    Wie stell ich nun also die Umlaute in einem Byte in Java dar?
    Quasi nach der (landläufig so bekannten) Ansii-Kodierung.
    Also einem Ascii-Zeichen auf 255 erweitert?

    Ich hoffe, jemand hat eine Idee...


    der Datschi
     
  2. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.245
    Muß es eine 8Bit Zeichenkodierung sein, oder muß nur der Dateiinhalt 8Bit sein? Andernfalls könnte man UTF-8 nehmen. Sonst mußt Du Dir was einfallen lassen und eine ISO Latin-1 oder ISO Latin-9 Datei schreiben.
     
  3. nevermind

    nevermind Bismarckapfel

    Dabei seit:
    19.12.07
    Beiträge:
    142
    Ich hab zwar nicht ganz kapiert was Du machen willst, aber Java kann einen signed byte (also im 2er Komplement) sehr wohl als 8-Bit Character interpretieren. Denn die Zahl der darstellbaren Werte ändert sich ja nicht (|-128| + 127 = 255). Kleine Demo mit UTF-8:

    Code:
    	public static void main(String[] args) {
    		String test = "Hallööö welt!";
    		byte[] b_arr;
    		try {
    			b_arr = test.getBytes("UTF-8");
    			for (byte b : b_arr)
    				System.out.println(b);
    			String ergebnis = new String(b_arr, "UTF-8");
    			System.out.println(ergebnis);
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		}
    	}
     

Diese Seite empfehlen