bit manipulation frustration
Mike Fletcher
mfletch at tpresence.com
Sun Jul 23 01:20:14 EDT 2000
More information about the Python-list mailing list
Sun Jul 23 01:20:14 EDT 2000
- Previous message (by thread): bit manipulation frustration
- Next message (by thread): bit manipulation frustration
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Convoluted, yes, but this might give you some ideas for manipulations (or it might give you convulsions ;0) )... import struct def toRGB( line ): line = struct.unpack( 'H'*len(line), line) result = [] R = 64512 G = 2016 B = 63 for integer in line: result.append( ( R&integer >> 10, G&integer >> 5, B&integer, ) ) return result def toString( line ): result = [] for r,g,b in line: result.append( r << 10 + g << 5 + b ) return apply( struct.pack, ( 'H'*len(result),)+tuple(result) ) Oh, in case you're wondering, this will be _ridiculously_ slow, Python's not good at bit-fiddling :) . That's one reason PIL's C extensions exist :) . You'll probably find something that can read 16-bit integers into RGB values somewhere in the codebase. HTH, Mike -----Original Message----- From: Courageous [mailto:jkraska1 at san.rr.com] Sent: Sunday, July 23, 2000 12:56 AM To: python-list at python.org Subject: Re: bit manipulation frustration > > vice versa. Eeek. Help? Will someone please remind me and > > hit me with a rubber mallet??? :) > ... is one way. There are probably others. Consider youself whalloped. Yeah, amongst all the various documentation, I finally found my way to FAQTS. It was: >>> l=list("fred") >>> l ['f', 'r', 'e', 'd'] >>> string.join(l,"") 'fred' >>> > > Second, this whole paradigm seems so skrewball. > ... > > get it?) Um, well suppose I do something like... myfile.seek ( 2000, 0 ) str = myfile.read (20) This will result in a sequence of 20 bytes ('char'), But these are 16 bit RGB values (1 pad, 5/5/5 R/G/B). In C, I would quite possibly load these into ints, as 16 bit values straight up, and manipulate them that way. Now while I understand that I can unpack into 16 bit integers, manipulate, and then pack back to char all via the struct module, this is seeming like a great deal of transmogrification. Say for example I want to increase or decrease R, G, or B values. Or, say, I want to convert to 32 bit color bitmaps? C/ -- http://www.python.org/mailman/listinfo/python-list
- Previous message (by thread): bit manipulation frustration
- Next message (by thread): bit manipulation frustration
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list