> dd if=/tmp/file1 bs=1 skip=50000000 count=10000000
or you can use any block size you want and treat skip and count as byte counts, not block counts.
> dd if=/tmp/file1 bs=4M skip=50M count=10M iflag=skip_bytes,count_bytes
Option 1 will run at Kilobytes per second as it is transferring 1 byte at a time (my test gives me 933kB/s)
Option 2 will run a 100's MB per second as it is transferring 4MB at a time (my test gives me 202MB/s).
Edit: What I should have said at the top of the post was "If you want to extract data from a file whose size is not an integer block multiple". In the above example you could have used a Blocksize of 10MB for the same result. You cannot do this for an oddly size extraction (say 1234567bytes).