wrs-HexUtils.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. const HEX_CHAR_TABLE = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
  2. export function intToByte(intValue){
  3. var byteValue = intValue & 0xff;
  4. return byteValue;
  5. }
  6. export function byteToInt(byteValue){
  7. var intValue = byteValue & 0xff;
  8. return intValue;
  9. }
  10. export function intArrayToHex(intArray) {
  11. var byteArray = []
  12. for(var i = 0; i < intArray.length; i ++) {
  13. byteArray.push(intToByte(intArray[i]));
  14. }
  15. return byteArrayToHex(byteArray);
  16. }
  17. export function byteArrayToHex(byteArray) {
  18. // 方法1:
  19. var hex = ""
  20. for(var i = 0; i < byteArray.length; i ++) {
  21. var byteValue = byteArray[i];
  22. hex = hex + HEX_CHAR_TABLE[(byteValue & 0xf0) >> 4];
  23. hex = hex + HEX_CHAR_TABLE[byteValue & 0x0f];
  24. }
  25. return hex;
  26. }
  27. export function hexToIntArray(hex) {
  28. var len = hex.length/2;
  29. var intArray = [];
  30. for(var i = 0; i< len; i ++) {
  31. var start = i * 2;
  32. var hexStr = hex.substring(start, start + 2);
  33. var intValue = parseInt(hexStr,16);
  34. intArray.push(intValue);
  35. }
  36. return intArray;
  37. }
  38. export function hexToByteArray(hex) {
  39. var len = hex.length;
  40. var intArray = hexToIntArray(hex);
  41. var byteArray = [];
  42. for(var i = 0; i < intArray.length; i ++) {
  43. var intValue = intArray[i];
  44. var byteValue = intToByte(intValue);
  45. byteArray.push(byteValue);
  46. }
  47. return byteArray;
  48. }
  49. export function intToHex(intValue) {
  50. return intValue.toString(16);
  51. }
  52. /**
  53. * 16进制字符串转ArrayBuffer
  54. * @param {*} hex String
  55. */
  56. export function hexToArrayBuffer(hex) {
  57. var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
  58. return parseInt(h, 16)
  59. }));
  60. var buffer = typedArray.buffer;
  61. return buffer;
  62. }
  63. /**
  64. * ArrayButter转16进制字符串
  65. * @param {*} buffer ArrayBuffer
  66. */
  67. export function arrayBufferToHex(buffer) { // buffer is an ArrayBuffer
  68. return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
  69. }
  70. export function hexToUint8Array(hex) {
  71. var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
  72. return parseInt(h, 16)
  73. }));
  74. return typedArray;
  75. }
  76. export function uint8ArrayToHex(uint8Array) {
  77. return Array.prototype.map
  78. .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
  79. .join('');
  80. }
  81. // module.exports = {
  82. // intArrayToHex: intArrayToHex,
  83. // byteArrayToHex: byteArrayToHex,
  84. // intToHex: intToHex,
  85. // hexToIntArray: hexToIntArray,
  86. // hexToByteArray: hexToByteArray,
  87. // hexToArrayBuffer: hexToArrayBuffer,
  88. // arrayBufferToHex: arrayBufferToHex
  89. // }