SOURCE

let map = new Map();

map.set("81", "INPUT");
map.set("91", "OUTPUT");
map.set("a1", "COLLECTION");
map.set("b1", "FEATURE");
map.set("c0", "END_COLLECTION");
map.set("05", "USAGE_PAGE");
map.set("15", "LOGICAL_MINIMUM");
map.set("25", "LOGICAL_MAXIMUM");
map.set("35", "PHYSICAL_MINIMUM");
map.set("45", "PHYSICAL_MAXIMUM");
map.set("55", "UNIT_EXPONENT");
map.set("65", "UNIT");
map.set("75", "REPORT_SIZE");
map.set("85", "REPORT_ID");
map.set("95", "REPORT_COUNT");
map.set("09", "USAGE");
map.set("19", "USAGE_MINIMUM");
map.set("29", "USAGE_MAXIMUM");

let source = '05010906a1018501050719e029e71500250175019508810295067508150026a400050719002aa4008100c005010902a10185020901a1009510750115002501050919012910810205011601f826ff07750c95020930093181061581257f75089501093881069501050c0a38028106c0c00643ff0a0202a101851175089513150026ff000902810009029100c0';

let len = source.length;
var result = '';

for (var i = 0; i < len; i++) {
    var cmd = source[i] + '' + source[++i];
    if (cmd != "c0") {
        // 不是结束,输出为一行
        var val = source[++i] + '' + source[++i];
        var cmdDes = map.get(cmd)?map.get(cmd):cmd;
        console.log(cmdDes + ' ' + val);
    } else {
        console.log(map.get(cmd));
    }
}
console 命令行工具 X clear

                    
>
console