小端存储是低位在前高位在后,以下是一个小端存储案例
比如后台接口传过这样一组字符串:
let devTime = "e5 07 00 00 03 00 00 00 10 00 00 00 09 00 00 00 22 00 00 00 0f 00 00 00"
小端存储方式,数据低位存放在内存低位,每4个为一组,倒着读:
e5 07 00 00 //年:小端读7E5 转换为十进制是2021
03 00 00 00 //月:小端读03 转换为十进制是3
10 00 00 00 //日:小端读10 转换为十进制是16
09 00 00 00 //时:小端读09 转换为十进制是9
22 00 00 00 //分:小端读22 转换为十进制是34
0f 00 00 00 //秒:小端读0f 转换为十进制是15
前端js将其转换为字符串方法如下
function device_time_show(str){
let year = "";
let month = "";
let day = "";
let hour = "";
let minute = "";
let second = "";
let arr = str.split(" ");
let res = "";
for(let i=arr.length-1;i>=0;i--){
if(parseInt(i/4)==0){
year += arr[i]
}else if(parseInt(i/4)==1){
month += arr[i]
}else if(parseInt(i/4)==2){
day += arr[i]
}else if(parseInt(i/4)==3){
hour += arr[i]
}else if(parseInt(i/4)==4){
minute += arr[i]
}else{
second += arr[i]
}
}
res = parseInt(year,16)+"-"+tran(parseInt(month,16))+"-"+tran(parseInt(day,16))+" "+tran(parseInt(hour,16))+":"+tran(parseInt(minute,16))+":"+tran(parseInt(second,16))
return res
}
//时间日期不够两位补0
function tran(num){
if(num.toString().length==1){
return '0'+num
}else{
return num
}
}
原理:数组一共24个元素,下标被4整除,可以判断出哪几个元素控制年、月、日、时、分、秒,将元素倒叙拼接获得16进制数的字符串,然后通过parseInt转换为十进制