zoukankan      html  css  js  c++  java
  • aardio写的16进制解析库

    使用aardio写了一个udp测试工具,使用的hpsocket,记录一下

    他好像是直接封装的c还是c++的库,所以返回的数据其实是一个指针数据,需要转为Byte[]数组,然后再做相关的解析操作

    下面是写测试工具过程中用到的写的进制转换类

    namespace realid.iohelper {
        //创建byte[]数组
        createBuffer = function(bufLength) {
            return ..raw.buffer(bufLength);
        };
        //复制数组
        copyBuffer = function(sourceBuffers, startIndex, copyLength) {
            var destinationBuffer = createBuffer(copyLength);
            var index = 1;
            var endIndex = startIndex + copyLength - 1;
            for (i = startIndex; endIndex; 1) {
                
                destinationBuffer[index] = sourceBuffers[i];
                index++;
            }
    
            return destinationBuffer;
        };
        //指针数pointData据转byte[]
        point2Hex = function(pointData, startPosition, endPosition) {
            var data = ..raw.tostring(pointData, startPosition, endPosition);
            var dataHex = ..string.hex(data, "");
            return dataHex;
        };
        //指针数pointData据转hex字符串
        point2Buffer = function(pointData, length) {
            var buffers = ..raw.buffer(length);
                ..raw.copy(buffers, pointData, length);
            return buffers;
        };
        //翻转数组
        reverse = function(buffers) {
            var array = createBuffer(#buffers);
            var index = 1;
            for (i = #buffers; 1; - 1) {
                array[index] = buffers[i];
                index++;
            }
            return array;
        };
        //单byte转bitarray
        byte2BitArray = function(byteData) {
            var bitSet = {};
            for (i = 0; 7; 1) {
                    ..table.push(bitSet, ((byteData >> i) & 0x1));
            }
    
            return bitSet;
        };
        //byte[]转bitarray
        buffer2BitArray = function(buffers, isLittleEndian = true) {
            var bitSet = {};
            if (isLittleEndian) {
                for (j = #buffers; 1; - 1) {
                    var byteData = buffers[j];
                    for (i = 0; 7; 1) {
                         ..table.push(bitSet, ((byteData >> i) & 0x1));
                    }
                }
    
            } else {
               for (j =1; #buffers; 1) {
                    var byteData = buffers[j];
                    for (i =7; 1;-1) {
                            ..table.push(bitSet, ((byteData >> i) & 0x1));
                    }
                }
            }
            return bitSet;
        };
        //buffer转hex
        buffer2Hex = function(buffers) {
            var hex = "";
            import console;
            for (i = 1;# buffers; 1) {
                var byteHex1 = ..tostring(buffers[i], 16); //类型 0xa1 ox0;
                var byteHex2 = "00"; //转为 a100
                if (byteHex1 != "0x0") {
                    byteHex2 = ..string.trimleft(byteHex1, "0x"); //转为 a100
                    if (#byteHex2 == 1) {
                        byteHex2 = ..string.concat("0", byteHex2);
                    }
                };
                hex = ..string.concat(hex, byteHex2);
            }
            return ..string.upper(hex);
        };
        //hex转buffers
        hex2Buffer = function(hex) {
            hex = ..string.replace(hex, "@-", "");
            hex = ..string.replace(hex, "@0x", "");
            hex = ..string.replace(hex, "@0X", "");
            hex = ..string.replace(hex, "@ ", "");
            hex = ..string.replace(hex, "@
    ", "");
            hex = ..string.replace(hex, "@
    ", "");
            hex = ..string.replace(hex, "@,", "");
            
            var dataLength = #hex;
            var bts = createBuffer(dataLength / 2);
            var index = 1;
            for (i = 1; dataLength; 2) {
                var strHex = ..string.slice(hex, i, i + 1);
                bts[index] = ..tonumber(strHex, 16);
                index++;
            }
            return bts;
    
        }
        //从字节数据指定位置读取一个无符号16位整数
        getInt = function(buffers, isLittleEndian = true) {
            var hex = "";
            if (isLittleEndian) {
                var newBuffers = reverse(buffers);
                hex = buffer2Hex(newBuffers);
    
            } else {
                hex = buffer2Hex(buffers);
            }
            return ..tonumber(hex, 16);
        };
        getNow = function() {
            var tm = ..time();
            //改变格式化模式串
            tm.format = "%Y-%m-%d %H:%M:%S";
    
            //从时间值创建字符串
            var str = ..tostring(tm);
            return str;
        };
        getNowZH = function() {
            var tm = ..time();
            //改变格式化模式串
            tm.format = "%Y年%m月%d日 %H点%M分%S秒";
    
            //从时间值创建字符串
            var str = ..tostring(tm);
            return str;
        }
    
    }
    
    /**intellisense(realid.iothelper)
    createBuffer(bufLength) = 创建byte[]数组
    point2Buffer(pointData,length) = 指针数pointData据转byte[]
    copyBuffer(sourceBuffers,startIndex,endIndex) = 复制数组
    reverse(buffers) =翻转数组
    byte2BitArray(byte) =单个byte转bitArray
    buffer2BitArray(buffers, isLittleEndian = true)=byte[]数组转bitarray
    point2Hex(pointData,startPosition,copyLength) = 指针数pointData据转hex字符串
    buffer2Hex(buffers) =将byte[]数组转为HEX字符串
    hex2Buffer(hexString) =将HEX字符串转为byte[]数组
    getInt(buffers,isLittleEndian=true) =从字节数据指定位置读取一个无符号16位整数
    getNow() = 获取当前时间2021-04-10 13:32:20
    getNowZH() = 获取中文格式2021年4月10号 13点32分20秒
    end intellisense**/
    

      

    记忆力下降,日常日志
  • 相关阅读:
    左偏树——可以标记合并的堆
    主席树——多棵线段树的集合
    [中山市选2011]完全平方数 ——莫比乌斯函数
    决策单调性优化dp
    [NOI2015]寿司晚宴——状压dp
    【[国家集训队]等差子序列】
    线性基——数集压缩自动机
    Java实现 蓝桥杯VIP 算法训练 筛选号码
    BSGS&EXBSGS 大手拉小手,大步小步走
    CRT&EXCRT 中国剩余定理及其扩展
  • 原文地址:https://www.cnblogs.com/yushuo/p/14649150.html
Copyright © 2011-2022 走看看