imageguy wrote: > I am looking for the most efficient method of replacing a repeating > sequence in a byte string returned from a imaging .dll, connected via > > I receive the byte string with the following sequence 'bgrbgrbgrbgr' > and I would like to convert this to 'rbgrbgrbgrbg' > FWIW, the string is created using ctypes.create_string_buffer function > > The following code works but feels a bit clunk and is rather slow too. > > blist = list(buffer) > for start in xrange(0,len(blist), 3): > try: > blue = blist[start] > red = blist[start+2] > blist[start] = red > blist[start+2] = blue > except IndexError: > pass > > new_buffer = ''.join(blist) > > new_buffer is then passed to a wx program to create and image. > > Any thoughts comments would be appreciated. > > geoff. > > PS: I started this post earlier, but I think I hit the send button > too soon. My apologies to the group for sloppy typing. > May not be any quicker, but it works:
blues = buffer[0::3] greens = buffer[1::3] reds = buffer[2::3] result = "".join("".join(x) for x in zip(reds, blues, greens)) regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list