Большой Воронежский Форум
Страница 2 из 2
< 12
» Программирование>считывание .dbf "вручную" на Java
Zav 10:13 18.06.2009
У меня проблема с типами данных.

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

http://msdn.microsoft.com/ru-ru/library/ms228360.aspx

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 нет такого типа данных. Только знаковые.

хм. с Java не работал но видимо так и есть
http://wm-help.net/books-online/book.../12462-62.html

Сообщение от :
Переменные типа byte, short, int и long являются знаковыми. В языке Java нет беззнаковых переменных, как это было в языке С.

думаю нужно юзать int и не забивать голову из за лишнего байта. плата за переносимость ) [Ответ]
Zav 12:52 18.06.2009

Сообщение от ][irurg:
думаю нужно юзать int и не забивать голову из за лишнего байта. плата за переносимость )

У меня много массивов. http://www.realcoding.net/articles/o...n’s-j2sdk.html
прочитал небольшую статью. +1 Хирургу. Буду переделывать код. [Ответ]
Zav 09:56 23.06.2009
Все! Закончил конвертер из dbf в txt. Теперь придумал новый шаг в своем развитии. Буду писать конструктор с интерфейсом, который будет позволять менять имена полей и их последовательность, если из dbf в dbf, а также менять разделитель в текстовом формате.
Всем спасибо! [Ответ]
Страница 2 из 2
< 12
Вверх