| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Как прочитать 4 байта (не символа) из файла |
| Автор: VIAcom 12.7.2005, 14:14 |
| Хочу писаь/читать Integer не в текстовом виде как '12345', а просто 4 байта, сколько он (integer) вроде и занимет. И вообще можно как нибудь без Java получить из BLOB/BFILE числовое значение любого байта, а лучше набор байт. Почему dbms_lob.read(Source,Count,Offset,Buffer); Переменная Buffer не может быть ни байтом ни целым ни вообще киким нибудь числовым значением. |
| Автор: LSD 12.7.2005, 14:29 |
| А порядок байт каким считать, little-endian или big-endian? |
| Автор: VIAcom 12.7.2005, 15:38 |
| Нет разницы чесно говоря, я даже один байт не могу поднять, т.к. ASCII() не работает для значений символов #00 - #31 ибо они служебные и в набор не входят по всей видимости. короче вместо a=3 получаю a=48 если есть чем прочитать хотябы 1 байт - остальное пустяки. Криво но напишу что нибудь вроде n:=b1*1 + b2*64 + b3*65536; но надо без Java? ее заказчик не хочет даже видеть |
| Автор: igon 13.7.2005, 00:02 | ||
| Твой Buffer имеет тип RAW. Используй функцию RAWTOHEX(), чтобы получить шестнадцатиричное char представление твоего Buffer: каждый байт будет представлен парой символов (от '00' до 'FF'). У Oracle вроде нет нужных функций (типа HexToNumber()), придется писать свой конвертер, что-то вроде
|
| Автор: LSD 13.7.2005, 09:20 |
| Можно работать посимвольно, тогда if...elsif будет короче. А вообще мне не очень ясно, чем вызванно такое неприятие Java. Там все это делается гораздо проще. |
| Автор: igon 13.7.2005, 21:58 | ||||||||
Угу, но это уже
типа
У тебя была такая классная подпись... to VIAcom хранимые на Java + wrap -> и ничего заказчик не увидит |
| Автор: VIAcom 19.7.2005, 15:49 | ||
Всем огромное СПАСИБО!
Вот такое рабочее решение, несколько медленно, т.к. возвожу в сепень ... но зато коротко и красиво. |
| Автор: igon 19.7.2005, 17:43 | ||||
BTW
2? Не 256? |