Re: converting from bytea to integers
От | John DeSoi |
---|---|
Тема | Re: converting from bytea to integers |
Дата | |
Msg-id | 456F3E56-7596-4310-8FE5-BB06CEA561AA@pgedit.com обсуждение исходный текст |
Ответ на | Re: converting from bytea to integers ("Daniel Verite" <daniel@manitou-mail.org>) |
Список | pgsql-general |
On Apr 20, 2009, at 5:23 PM, Daniel Verite wrote: > get_byte()? > > mailtest=> \set e '\'\12\15\107\20\'::bytea' > > mailtest=> select get_byte(:e,0),get_byte(:e,1),get_byte(:e, > 2),get_byte(:e,3); > get_byte | get_byte | get_byte | get_byte ----------+---------- > +----------+---------- > 10 | 13 | 71 | 16 That's what I ended up with. My first attempts at it were unsuccessful because I did not notice that get_byte uses zero indexing. Earlier in the routine I extracted bytes using substring and just assumed they used the same indexing. They don't. It might be worthy of a documentation note -- it seems easy to miss if you have not used the binary functions before. I generated the integer from the bytes using something like this: b1 = get_byte(p_array, i+3); b2 = get_byte(p_array, i+2); b3 = get_byte(p_array, i+1); b4 = get_byte(p_array, i); val = (b1 << 24) + (b2 << 16) + (b3 << 8) + b4; Thanks, John DeSoi, Ph.D.
В списке pgsql-general по дате отправления: