tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
511
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von FBIagent
    FBIagent FBIagent ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    281
    Guten abend,

    ich möchte einen 0 terminierten String, mit rücksichtname auf das Charset, aus einem
    ByteBuffer lesen. Bin ich nun gezwungen String.getBytes(Charset) aufzurufen um die menge
    an bytes zu ermitteln, oder ist es hier besser einen anderen Ansatz zu verfolgen?

    Desweiteren stellt sich mir die Frage ob es nicht eine Möglichkeit gibt den String zu konstruieren ohne die
    gesammte länge des backing arrays anzugeben. Sprich im vorhinein zu überprüfen "dann und dann" kommt die
    Nullterminierung.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
        protected final String readS(ByteBuffer readBuf, Charset chSet)
            throws Exception
        {
            if (!readBuf.hasArray()) throw new Exception("readBuf must have a backing array");
     
            byte[] x = readBuf.array();
            int xOffset = readBuf.arrayOffset();
            int xPosition = readBuf.position();
     
            String res = new String(x, xOffset + xPosition, x.length - (xOffset + xPosition), chSet);
            res = res.substring(0, res.indexOf('\u0000'));
            // FIXME: update position of buffer properly, old method is not sufficiently anymore, charsets will be dynamic soon
            readBuf.position(xPosition + res.length() * 2 + 2);
            return res;
        }
     
        protected final String readS(ByteBuffer readBuf, Charset chSet, int numBytes)
        {
            byte[] x = readX(readBuf, numBytes);
            return new String(x, chSet).trim();
        }
    Geändert von FBIagent (22.09.10 um 22:38 Uhr)
     
    Don't blame people for bugs. Work together to make things better. No
    finger pointing! Not ever! A good rule is to Never Assume An Attack.
    If you find yourself getting angry, assume it's a misunderstanding, not an
    attack.

Ähnliche Themen

  1. C# equivalent zu Javas ByteBuffer putInt(int)
    Von Danny125 im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 04.12.10, 18:37
  2. String von hinten lesen VB6
    Von jojo4ever im Forum Visual Basic 6.0
    Antworten: 8
    Letzter Beitrag: 06.05.08, 14:29
  3. string aus Datei lesen
    Von LadyMarion im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 28.08.07, 13:40
  4. aus XML-String lesen
    Von Fireball1982 im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 30.03.05, 10:53
  5. Antworten: 1
    Letzter Beitrag: 18.01.05, 15:26

Stichworte