Извлечение двоичных данных из таблицы SQL в JAVA с помощью байтового массива и класса BitSet - PullRequest
0 голосов
/ 22 марта 2011

Структура таблицы - Колонка X (Binary (15), нуль)

1002 * Значение в колонке X - 000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000 1004 * т.е. 15x8 = 120 бит 1006 * SQL-запрос
Select X from tablename;

Часть кода Java для получения значения: barray равно byte[] и bits равно new BitSet().

barray = resultset.getBytes("X");

if(barray != null) {
   for (int i = 0; i < barray.length * 8; i++) {
      if ((barray[barray.length-i/8-1]&(1<<(i%8))) > 0) {
         bits.set(i);
      }
   }
}

Проблема: 2-й оператор if возвращает ложное значение (неда?) Таким образом, объект битов не заполняется.Пожалуйста, предложите решение.

1 Ответ

1 голос
/ 22 марта 2011

Я думаю, что ваша ошибка находится за пределами кода, который вы опубликовали, поскольку я завернул его в эту программу, и она работает здесь:

package de.fencing_game.paul.examples;

import java.util.BitSet;

/**
 * Test class for /8075898/izvlechenie-dvoichnyh-dannyh-iz-tablitsy-sql-v-java-s-pomoschy-baitovogo-massiva-i-klassa-bitset.
 */
public class BitSetByteArrayTest {


    public static void main(String[] params) {

        byte[] barray= new byte[]{ 0x01, 0x02, 0x04, 0x08,
                                   0x10, 0x20, 0x40, (byte)0x80,
                                   };
        BitSet bits = new BitSet();

        if(barray!=null){
            for (int i=0; i<barray.length*8; i++) {
                if ((barray[barray.length-i/8-1]&(1<<(i%8))) > 0) {
                    bits.set(i);
                }
            }
        }
        System.out.println(bits);
    }
}

Работает также с вашим вводом

    byte[] barray = { 0,    0, 0, 0, 0,
                      0x20, 0, 0, 0, 0,
                      0,    0, 0, 0, 0};

вместо образца массива, показывая {77} затем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...