Igor,

  haha i JUST changed this before i checked your email
to:

while ((status = sqlite3_step(statement)) ==
SQLITE_ROW)
   {
        std::cout << "status is: " << status <<
std::endl;
        i++;
        if(i == 1)
         std::cout << "first row" << std::endl;
        else
          std::cout << "another row" << std::endl;
        num_bytes = sqlite3_column_bytes(statement,
1);
        num_bytes = num_bytes / sizeof(unsigned
short);
        image = new unsigned short[num_bytes];
        image = (const unsigned
short*)sqlite3_column_blob(statement, 1);

     for(int j = 0; j < num_bytes; j++)
       std::cout << "image " << j << ": " << image[j]
<< std::endl;
**************************************************

so i get the output correct back out now: 

Output --

first row
image 0: 0
image 1: 3
image 2: 6
image 3: 9
image 4: 12
image 5: 15
image 6: 18
image 7: 21
image 8: 24
image 9: 27
another row
image 0: 0
image 1: 1
image 2: 2
image 3: 3
image 4: 4
image 5: 5
image 6: 6
image 7: 7
image 8: 8
image 9: 9
another row
image 0: 0
image 1: 1
image 2: 2
image 3: 3
image 4: 4
image 5: 5
image 6: 6
image 7: 7
image 8: 8
image 9: 9
***************************

-so it seems that despite my byte order being wrong?,
i get the output back out exactly how i stored it in
the original array. is there a problem here i should
be concerned about in the long run or why i should
change the order? 

would like your response -- thanks!

oh yeah - 

i am running on a Linux Ubuntu machine. the only big
endian machines now a days that i can think of are old
SGI's(didnt they switch to intel) and old mac's(which
now use intel(little endian)). 

*****************************************************


--- Igor Tandetnik <[EMAIL PROTECTED]> wrote:

> C S <[EMAIL PROTECTED]> wrote:
> >  thanks for all your help too man. here is what is
> in
> > the table images so far when i do a select. its 3
> > blobs:
> >
> > sqlite> select imageID, hex(imageData) from
> Images;
> > 1|00 0003 0006 0009 000C 000F 0012 0015 0018 001B
> 00
> > 2|00 0001 0002 0003 0004 0005 0006 0007 0008 0009
> 00
> > 3|00 0001 0002 0003 0004 0005 0006 0007 0008 0009
> 00
> >
>
*****************************************************
> 
> I bet you are running on a little-endian machine. On
> such a machine, the 
> low-order byte comes first. So the correct breakdown
> is
> 
> 1|0000 0300 0600 0900 0C00 0F00 1200 1500 1800 1B00
> 
> For example, two bytes 0300 represent a two-byte
> integer 3 in 
> little-endian (least-significant byte first,
> most-significant last).
> 
> > while ((status = sqlite3_step(statement)) ==
> > SQLITE_ROW)
> >   {
> >    i++
> >
> >    num_bytes = sqlite3_column_bytes(statement, i);
> 
> 'i' refers to the row index, and is incremented with
> each step. The last 
> parameter to sqlite3_column_bytes is a _column_
> index: it doesn't change 
> as you scan through rows. You always pass 0 to
> retrieve the first column 
> (from the current row, whatever it happens to be), 1
> to retrieve the 
> second column and so on.
> 
> Your code just accidentally happens to pass a
> correct column index for 
> the first row, but wrong index for all subsequent
> rows.
> 
> Igor Tandetnik 
> 
> 
> 
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
>
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 



      
____________________________________________________________________________________
Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  
http://tools.search.yahoo.com/newsearch/category.php?category=shopping
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to