Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
а взять строку, прочитать до 2 сотого разряда (ориентиром будет точка), положить в новую строку и переконвертить во Float? Может есть более простые способы - но этот, что называется , в лоб.
А вообще - теперь есть Formatter - может там чего можно, це ж printf
Заблокирован Статус: Не в сети Регистрация: 29.12.2004
Что бы не создавать новую тему решил запостить здесь...
Есть такой кусок кода:
Код:
import java.io.*; import java.nio.charset.*;
public class Encode3 {
public static void main(String args[]) throws IOException { String buff = "ЙЦУКЕНГШЩЗХЇЁФІВАПРОЛДЖЄЯЧСМИТЬБЮИЫ"; buff = new String(buff.getBytes("Cp866"),"Cp1251"); System.out.println(buff); } }
после вывода на экран - вместо буквы "Ш" получаеться "?". Читал http://www.javaportal.ru/java/articles/ ... .html#bugs вот здесь, но что-т оне понял как решить эту проблему. Вообщем задача: русский текст в Unicode - перегнать в DOS.
_________________ Роль сумашедшего очень удобна - ты не в себе, но себе на уме.
Последний раз редактировалось Николай1979 19.09.2006 16:55, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
там идет речь о том, что far сохраняет русские буквы в кодировке DOS (то есть если исходник набран в фаре там уже не юникод!)
а javac пытается прочитать из исходника 1251
соответственно для начала нужно подать указанный ключик в статье джаваку для правильного чтения исходника...
Заблокирован Статус: Не в сети Регистрация: 29.12.2004
Catar спасибо, за ответ.
Может я не совсем правильно описал свою проблему.
Вообщем тут проблема какая - я читаю данные из оракла, и пишу их в файл.
Если не проводить ни какие преобразование, то все буквы ложаться в файл нормально но в Win-кодировке (Cp1251).
Мне надо их на лету преобразовывать в Dos(Cp866)-кодировку.
Вот здесь и возникает проблема - заглавная буква "Ш" - теряеться.
JAVA-класс работает под ораклом (на встроенной ВМ).
Может я не коректно провожу преобразование?
Я с Явой не очень долго дружу и этот вариант изменения кодировки, я первое что нашел.
_________________ Роль сумашедшего очень удобна - ты не в себе, но себе на уме.
Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
Николай1979 писал(а):
но в Win-кодировке (Cp1251)
потому что ты пишешь под виндой и соответственно там дефолт - 1251.
Николай1979 писал(а):
Мне надо их на лету преобразовывать в Dos(Cp866)-кодировку.
если ты хочешь сразу писать в DOS кодировку, то пользуй нечто вроде
out = new FileWriter(filename, "charset");
где charset - название кодировки (я не помню как там правильно писать надо... cp866? )
Заблокирован Статус: Не в сети Регистрация: 29.12.2004
Вообщем проблему решил следующим образом: написал свою функцию для преобразования.
Код:
private static byte[] ConvToDos (String value) { byte[] buff = new byte[value.length()]; Character cc = null;
for (int m=0; m<value.length(); m++) { cc = new Character(value.charAt(m));
switch (cc.hashCode()) { case 1040: buff[m]=(byte)128;break; //А case 1041: buff[m]=(byte)129;break; //Б case 1042: buff[m]=(byte)130;break; //В case 1043: buff[m]=(byte)131;break; //Г case 1044: buff[m]=(byte)132;break; //Д case 1045: buff[m]=(byte)133;break; //Е case 1046: buff[m]=(byte)134;break; //Ж case 1047: buff[m]=(byte)135;break; //З case 1048: buff[m]=(byte)136;break; //И case 1049: buff[m]=(byte)137;break; //Й case 1050: buff[m]=(byte)138;break; //К case 1051: buff[m]=(byte)139;break; //Л case 1052: buff[m]=(byte)140;break; //М case 1053: buff[m]=(byte)141;break; //Н case 1054: buff[m]=(byte)142;break; //О case 1055: buff[m]=(byte)143;break; //П case 1056: buff[m]=(byte)144;break; //Р case 1057: buff[m]=(byte)145;break; //С case 1058: buff[m]=(byte)146;break; //Т case 1059: buff[m]=(byte)147;break; //У case 1060: buff[m]=(byte)148;break; //Ф case 1061: buff[m]=(byte)149;break; //Х case 1062: buff[m]=(byte)150;break; //Ц case 1063: buff[m]=(byte)151;break; //Ч case 1064: buff[m]=(byte)152;break; //Ш case 1065: buff[m]=(byte)153;break; //Щ case 1066: buff[m]=(byte)154;break; //Ъ case 1067: buff[m]=(byte)155;break; //Ы case 1068: buff[m]=(byte)156;break; //Ь case 1069: buff[m]=(byte)157;break; //Э case 1070: buff[m]=(byte)158;break; //Ю case 1071: buff[m]=(byte)159;break; //Я case 1025: buff[m]=(byte)240;break; //Ё case 1031: buff[m]=(byte)244;break; //Ї case 1030: buff[m]=(byte)108;break; //І case 1028: buff[m]=(byte)242;break; //Є
case 1072: buff[m]=(byte)160;break; //а case 1073: buff[m]=(byte)161;break; //б case 1074: buff[m]=(byte)162;break; //в case 1075: buff[m]=(byte)163;break; //г case 1076: buff[m]=(byte)164;break; //д case 1077: buff[m]=(byte)165;break; //е case 1078: buff[m]=(byte)166;break; //ж case 1079: buff[m]=(byte)167;break; //з case 1080: buff[m]=(byte)168;break; //и case 1081: buff[m]=(byte)169;break; //й case 1082: buff[m]=(byte)170;break; //к case 1083: buff[m]=(byte)171;break; //л case 1084: buff[m]=(byte)172;break; //м case 1085: buff[m]=(byte)173;break; //н case 1086: buff[m]=(byte)174;break; //о case 1087: buff[m]=(byte)175;break; //п case 1088: buff[m]=(byte)224;break; //р case 1089: buff[m]=(byte)225;break; //с case 1090: buff[m]=(byte)226;break; //т case 1091: buff[m]=(byte)227;break; //у case 1092: buff[m]=(byte)228;break; //ф case 1093: buff[m]=(byte)229;break; //х case 1094: buff[m]=(byte)230;break; //ц case 1095: buff[m]=(byte)231;break; //ч case 1096: buff[m]=(byte)232;break; //ш case 1097: buff[m]=(byte)233;break; //щ case 1098: buff[m]=(byte)234;break; //ъ case 1099: buff[m]=(byte)235;break; //ы case 1100: buff[m]=(byte)236;break; //ь case 1101: buff[m]=(byte)237;break; //э case 1102: buff[m]=(byte)238;break; //ю case 1103: buff[m]=(byte)239;break; //я case 1105: buff[m]=(byte)241;break; //ё case 1111: buff[m]=(byte)245;break; //ї case 1110: buff[m]=(byte)105;break; //і case 1108: buff[m]=(byte)243;break; //є
Заблокирован Статус: Не в сети Регистрация: 29.12.2004
Catar в первом варианте было прямое сопоставление код в кодировке ЮНИКОД, коду этого же символа в ДОС-кодировке.
Во втором варианте вместо перебора массива, математически юникод преобразуеться в дос-код.
Catar писал(а):
оператор ? : - зло
Мжно узнать почему? До сих пор я встречался только с тем что данная конструкция хорошо подходит для записи небольших разветвлений, выполняеться быстрее чем традиционная конструкция if.....
_________________ Роль сумашедшего очень удобна - ты не в себе, но себе на уме.
Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
Николай1979 писал(а):
Мжно узнать почему?
По читабельности кода а так конечно вполне нормальный оператор..... Добавлено спустя 4 минуты, 24 секунды
Николай1979 писал(а):
выполняеться быстрее чем традиционная конструкция if
Кстати, не смотрел насколько? Просто Java не тот язык, на котором стоит заморачиваться с оптимизацией в стиле использования скажем операторов сдвига для деления\умножения на 2.
Заблокирован Статус: Не в сети Регистрация: 29.12.2004
Catar писал(а):
Кстати, не смотрел насколько? Просто Java не тот язык, на котором стоит заморачиваться с оптимизацией в стиле использования скажем операторов сдвига для деления\умножения на 2.
Просто Java такой язык что он применяеться не только сам по себе но и в составе других языков/СУБД/технологий...
Если писать проги которые будут выполняться в VMJava, то - да... У меня же данный кусок кода работает в VMJava - которая встроенна в Oracle. И здесь уже разница в работе оптимизированного и неоптимицированного кода существенна. (Пример, но он уж очень частный - у меня на формирование ДБФ-файлов суммарным объемом 40 мб с первым вариантом преобразования уходило порядка 30 минут, со вторым - 16-17 мин. Время конечно приблизительные, но на глаз заметные.)
_________________ Роль сумашедшего очень удобна - ты не в себе, но себе на уме.
Member
Статус: Не в сети Регистрация: 31.08.2005 Откуда: Мир
Как получить из изображения матрицу пикселей? (RGB)
есть у меня например Image image, могу его выводить (g.drawImage(image,0,0,null);)
но как получить цвета пикселей ? хотя бы одного подскажите плз. Добавлено спустя 2 минуты, 1 секунду Как получить из изображения матрицу пикселей? (RGB)
есть у меня например Image image, могу его выводить (п.drawImage(image,0,0,null);)
но как получить цвета пикселей ? хотя бы одного подскажите плз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения