比如:把Byte转换成MB。
现在有3145728Byte,要转换成MB该如何用代码实现呢?
定义单位数组:首先我们用数组存储若干个单位,从小到大依次是“Byte”,“KB”,“MB”, “GB”。
定义指向当前单位的变量:再使用一个变量存储当前单位在数组中的索引,很明显当前单位为Byte,所以变量指向数组中第一个元素的索引值:0。
循环除:再想想Byte到MB要做哪些数学运算?要做的就是除2次1024。
调整变量:另外我们在除1024后,单位提升了一阶,所以要把变量加1,指向在数组中更高一阶的单位。
伪代码:
val = 3145728
arr = [Byte, KB, MB]
curIndex = 0
for(i=0;i< arr.len; i++) {
val = val/1024
curIndex++
if(arr[i] == MB) {
break;
}
}
print(val) // 3
print(arr[curIndex]) // MB
其他形式的单位转换,都可以用类似的代码实现,包括:长度单位、功率单位和汇率单位等。
在这种案例中需要用一个线性数据结构存储单位,方便在单位换算时调整指针指向不同的单位,而数组是一个不错的选择。