0 terminierten String aus ByteBuffer lesen

FBIagent

Erfahrenes Mitglied
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.

Java:
    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();
    }
 
Zuletzt bearbeitet von einem Moderator:
Zurück