int bytes = 0; //парсер
fin = new FileInputStream(filename); //создаю поток
bytes = fin.read(); //команда считывания. Получает именно int значения. Не может быть типом byte.
Я делаю так. Создаю массивы типа byte. В заношу туда значения переменной (byte) bytes (преобразование типов). Поначалу все отлично.
Теперь рассмотрим сам файл. Открываем какой-нить hex-редактор. байты представлены там в 16-тиричной системе: 00 F1 A1 C3 и т.д. Если я считываю их и вывожу потом, то они преобразовываются в 10-тиричную систему: 00 - будет 0, 7D - 125, FF - 255...
Дальше вот какая "проблема". Когда записываю в массив с преобразованием int в byte. Тип данных byte в диапазоне от -128 до 127. Путем экспериментов вычислил, что если преобразовать число 128 оно преобразовывается как -128. 129 как -127. 130 как -126. 255(FF) как -1. То есть идет по кругу после 127. То есть значений то все также 256.
И получается у меня: высчитываю формулу кол-ва строк - может отличаться на 256. Вычисляю кол-во полей - получается вместо 12 - 4 поля.
Как тут быть? Свой тип данных что ли создавать? Есть легкий вариант - все массивы делать int. Но памяти ИМХО больше жрут. Нерентабельно.
[Ответ]
Yandex 10:21 18.06.2009
Zav, есть byte, а есть unsigned byte с диапазоном от 0 до 255. Тебе последний нужен.
[Ответ]
][irurg 10:39 18.06.2009
Zav, вы наверное работает сисадмином раз можете два месяца посветить в принципе бесполезному делу
Сообщение от Zav:
Тип данных byte в диапазоне от -128 до 127
byte Byte Целое число без знака 8 От 0 до 255
sbyte SByte Целое число со знаком 8 От -128 до 127
[Ответ]
xxx-men 10:41 18.06.2009
Zav, только посмотри в загаловке, может тебе как раз надо[-128:127] [Ответ]
Yandex 10:48 18.06.2009
][irurg, я когда инженером в казначействе города работал, то мог посвятить таким бесполезным вещам еще больше времени Некоторые там умудряются все новые игры проходить [Ответ]
Zav 11:10 18.06.2009
Сообщение от ][irurg:
Zav, вы наверное работает сисадмином раз можете два месяца посветить в принципе бесполезному делу
Не угадали Раньше был.
Сообщение от Yandex:
Zav, есть byte, а есть unsigned byte с диапазоном от 0 до 255. Тебе последний нужен.
Насколько я знаю в Java нет такого типа данных. Только знаковые.
Сообщение от Yandex:
Некоторые там умудряются все новые игры проходить
Devil May Cry4 с джойстиком. Но редко, потому что не любитель играть, больше учиться программировать нравится.
[Ответ]
Andrei_ra 11:12 18.06.2009
Сообщение от Yandex: ][irurg, я когда инженером в казначействе города работал, то мог посвятить таким бесполезным вещам еще больше времени Некоторые там умудряются все новые игры проходить
Видимо на время внедрения Центрк-КС и СЭД вы не попали, если упевали что-то еще делать [Ответ]
][irurg 12:03 18.06.2009
Сообщение от Zav:
Насколько я знаю в Java нет такого типа данных. Только знаковые.
Все! Закончил конвертер из dbf в txt. Теперь придумал новый шаг в своем развитии. Буду писать конструктор с интерфейсом, который будет позволять менять имена полей и их последовательность, если из dbf в dbf, а также менять разделитель в текстовом формате.
Всем спасибо!
[Ответ]