string.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. String.prototype.pad = function(l, r) {
  2. if (r === undefined) {
  3. r = l
  4. if (!(this.substr(0, 2) == "0x" || /^\d+$/.test(this)))
  5. l = 0
  6. }
  7. var ret = this.bin();
  8. while (ret.length < l)
  9. ret = "\0" + ret
  10. while (ret.length < r)
  11. ret = ret + "\0"
  12. return ret;
  13. }
  14. String.prototype.unpad = function() {
  15. var i = this.length;
  16. while (i && this[i - 1] == "\0")
  17. --i
  18. return this.substr(0, i)
  19. }
  20. String.prototype.bin = function() {
  21. if (this.substr(0, 2) == "0x") {
  22. bytes = []
  23. var i = 2;
  24. // Check if it's odd - pad with a zero if so.
  25. if (this.length % 2)
  26. bytes.push(parseInt(this.substr(i++, 1), 16))
  27. for (; i < this.length - 1; i += 2)
  28. bytes.push(parseInt(this.substr(i, 2), 16));
  29. return String.fromCharCode.apply(String, bytes);
  30. } else if (/^\d+$/.test(this))
  31. return bigInt(this.substr(0)).toHex().bin()
  32. // Otherwise we'll return the "String" object instead of an actual string
  33. return this.substr(0, this.length)
  34. }
  35. String.prototype.unbin = function() {
  36. var i, l, o = '';
  37. for(i = 0, l = this.length; i < l; i++) {
  38. var n = this.charCodeAt(i).toString(16);
  39. o += n.length < 2 ? '0' + n : n;
  40. }
  41. return "0x" + o;
  42. }
  43. String.prototype.dec = function() {
  44. return bigInt(this.substr(0)).toString()
  45. }
  46. String.prototype.hex = function() {
  47. return bigInt(this.substr(0)).toHex()
  48. }