wrs-ByteUtils.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. var hex = ""
  19. for(var i = 0; i < byteArray.length; i ++) {
  20. var byteValue = byteArray[i];
  21. hex = hex + HEX_CHAR_TABLE[(byteValue & 0xf0) >> 4];
  22. hex = hex + HEX_CHAR_TABLE[byteValue & 0x0f];
  23. }
  24. return hex;
  25. }
  26. export function hexToIntArray(hex) {
  27. var len = hex.length/2;
  28. var intArray = [];
  29. for(var i = 0; i< len; i ++) {
  30. var start = i * 2;
  31. var hexStr = hex.substring(start, start + 2);
  32. var intValue = parseInt(hexStr,16);
  33. intArray.push(intValue);
  34. }
  35. return intArray;
  36. }
  37. export function hexToByteArray(hex) {
  38. var len = hex.length;
  39. var intArray = hexToIntArray(hex);
  40. var byteArray = [];
  41. for(var i = 0; i < intArray.length; i ++) {
  42. var intValue = intArray[i];
  43. var byteValue = intToByte(intValue);
  44. byteArray.push(byteValue);
  45. }
  46. return byteArray;
  47. }
  48. export function intToHex(intValue) {
  49. return intValue.toString(16);
  50. }
  51. /**
  52. * 16进制字符串转ArrayBuffer
  53. * @param {*} hex String
  54. */
  55. export function hexToArrayBuffer(hex) {
  56. var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
  57. return parseInt(h, 16)
  58. }));
  59. var buffer = typedArray.buffer;
  60. return buffer;
  61. }
  62. /**
  63. * ArrayButter转16进制字符串
  64. * @param {*} buffer ArrayBuffer
  65. */
  66. export function arrayBufferToHex(buffer) { // buffer is an ArrayBuffer
  67. return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
  68. }
  69. // module.exports = {
  70. // intToByte: intToByte,
  71. // byteToInt: byteToInt,
  72. // intArrayToHex: intArrayToHex,
  73. // byteArrayToHex: byteArrayToHex,
  74. // highLowToInt: highLowToInt,
  75. // intToHighLow: intToHighLow,
  76. // intToHex: intToHex,
  77. // hexToIntArray: hexToIntArray,
  78. // hexToByteArray: hexToByteArray,
  79. // hexToArrayBuffer: hexToArrayBuffer,
  80. // arrayBufferToHex: arrayBufferToHex
  81. // }