1. Java / Говнокод #1538

    +68.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public char getChar() throws ErrorLexAn {
    	delSpace();
    	int simb = p.bufStr[p.posStr] & 0xFF;
    	return charl = simb < 128 ? (char) simb :
    		(new String(new byte[]{
    			convert == false ? (byte) simb : arrayConv[simb]})).charAt(0);
    }

    Читает следующий символ из буфера (хранятся в байтах) и конвертит по таблице.
    Я сам джаву плохо знаю, но уверен, что byte -> char можно сконвертить как-то проще.

    Запостил: Dimarius, 12 Августа 2009

    Комментарии (5) RSS

    • В чем собственно гавнокодистость? Похоже на конвертацию из одной кодировки в другую (конвертятся символы начиная с 128 что очень похоже на русские). Возможно Charset+CharsetEncoder+CharsetDecoder+By teBuffer решили бы проблему стандартными Java методами.
      Ответить
      • Говнокодистость в преобразованиях byte -> byte[] -> String -> char
        Да ещё и == false.
        Ответить
        • Наверно лучше бы сначала System.Text.Encoding.[кодировка].GetBytes и далее уже просто str[i] = (char)data[i];
          Хотя может там какая нестандартная кодировка?
          Ответить
        • Хотя нет, гоню, это в C# так.
          Ответить
    • Как правило в подобных случаях правильнее юзать InputStreamReader. Он автоматически преобразует кодировки + код лучше отражает свое назначение.
      Ответить

    Добавить комментарий