decode.js 608 B

12345678910111213141516171819202122232425262728
  1. function oct2Decimal(oct) {
  2. oct = parseInt(oct);
  3. var i = 0,
  4. bit,
  5. sum = 0;
  6. do {
  7. bit = oct % 10;
  8. sum += bit * Math.pow(8, i++);
  9. } while ( (oct = ~~(oct / 10)) !== 0 )
  10. return sum;
  11. }
  12. function decode(string) {
  13. string = string.trim();
  14. return string
  15. .replace(/^\"(.+)\"$/, '$1')
  16. // x >= 128 && x <= 255
  17. .replace(/(\\\d{3})+/g, function (_) {
  18. var octArray = _.split('\\').slice(1);
  19. var decArray = octArray.map(function(oct) {
  20. return oct2Decimal(oct);
  21. });
  22. return new Buffer(decArray).toString('utf8');
  23. });
  24. }
  25. module.exports = decode;