It's not clear to me - are you reading the data from the A/D, or are you reading the data from files?
If you're reading from files, then you have to know the file format. I would GUESS that the files would be an array of I16s - signed 16-bit integers, with four bits wasted on each sample. It's POSSIBLE they're packed - two 12-bit samples into 3 8-bit bytes. You can judge this from the file size, if you know this file is 1000 samples and the file size is 2000 bytes, you're ready to go - just read the file as a bytestream file of I16s, and swap bytes to get them into big-endian (standard) order. If the 1000-sample file is 1500 bytes, then they're packed - you will have to do some serious bit twiddling to unravel that - but it can be done. If the 1000-sample file is some other size, there's some sort of header included - you'll have to figure that out from documentation, or just trial and error.
