If you wanted to be slick, you could do it quite easily (and a lot faster, with a lot less code) using the port input pins register.
Assuming you used pins 0-7 (yes, using the RX/TX may not be safe =), you could quickly do:
result = PIND;
Yup, that's it =)
PIND = one bit per state, where the first bit (Bx) is pin 7 and the last bit (B0000000x) is pin 0. Thus, Binary one = B00000001, and only having pin 0 high would cause PIND's value to be B00000001. If you spread the pins across two registers, you'd need to do some bit-shifting and some and operations to get the right values in place, but that's pretty easy to do.
The drawbacks? You have to use PIND which may change on different processors. The benefits? If you're doing time-sensitive stuff, this will run eons faster than 8 digitalRead()s, and will compile to a lot less code.