https://mbed.org/users/sam_grove/code/Buffer/#89564915f2a7