From: Matt Brooks Date: 2009-09-02T23:01:49+09:00 Subject: confusing string parsing problem I don't understand how to do the following, any help is very appreciated. I have been programming in ruby 1.8.7 for about a month. I have a string that has in it: 2 byte UINT16 2 byte UINT16 1 byte UINT8 representing how many pairs of the next 2 strings there are variable length string1 <- Although for now I know this always equals BFO variable length string2 2 byte UINT16 I want to display each value from the fields, while also removing it from the string as I read it out. I believe the strings are terminated with a 0, so the null character needs to be removed also to correctly parse other fields. Although part of my problem is I don't understand how to parse until a null character is found, is this \0 like in C? Or is it \000 as I have scene some places? or 0.to_chr ? The string comes from a "rest" variable length field from the bit-struct class. So there was data before in the rest that I have processed and taken out off the front of the string, and after this point there is more data, but for now I am interested in this block of data. Something else that is known that could help, is the total length of the whole block is known, so the 7 bytes + however many bytes for the variable length strings is known. My attempt is horrible I know, and I don't think it really runs. writelog() is method to display my value... iterations_to_do = (bin_msg.element_length - 7) - 4 temparray = [] j = 0 if /^BFO/ =~ bin_msg.optional_sub_elements writelog("\n\n Parameter Name = BFO") bin_msg.optional_sub_elements.sub!(/^BFO/, '') while j < iterations_to_do bin_msg.optional_sub_elements.each_byte do |character| unless character == 0.chr temparray << character j += 1 end end end #here print first j number of elements in temparray? Thanks again, Matt -- Posted via http://www.ruby-forum.com/.