代码
byte转换工具
import java.lang.StringBuilder
/**
* byte 转换工具
*
* @author D10NG
* @date on 2019-11-23 16:52
*/
object ByteUtils {
/**
* 检验校验和
* @param data 数据,最后一个byte为校验和
*/
fun checkEndNum(data: ByteArray) : Boolean {
var num = (0).toByte()
for (i in 0 until data.size -1) {
num = (num + data[i]).toByte()
}
return num == data[data.size -1]
}
/**
* 获取校验和
* @param data 数据
*/
fun getEndNum(data: ByteArray) : Byte {
var num = (0).toByte()
for (element in data) {
num = (num + element).toByte()
}
return num
}
/**
* 将 byte 转为 8位二进制字符串 "00110011"
* @param byte
*/
fun getBinFromByte(byte: Byte) : String {
val str = Integer.toBinaryString(byte.toInt())
return StringUtils.upToNString(str, 8)
}
/**
* 将 boolean 数组 转换为 byte
* @param bools
*/
fun getByteFromBool(vararg bools: Boolean) : Byte {
val builder = StringBuilder()
for (b in bools.iterator()) {
builder.append(if (b) "1" else "0")
}
return getByteFromBin(builder.toString())
}
/**
* 将二进制字符串 "00110011" 转为 byte
* @param bin
*/
fun getByteFromBin(bin: String) : Byte {
val value = Integer.valueOf(bin, 2)
return value.toByte()
}
/**
* 将两个字节的byte数组转换成有符号整型
* @param byte1 高位
* @param byte2 低位
*/
fun convertSignInt(byte1: Byte, byte2: Byte): Int =
(byte1.toInt() shl 8) or (byte2.toInt() and 0xFF)
/**
* 将两个字节的byte数组转换成无符号整型
* @param byte1 高位
* @param byte2 低位
*/
fun convertUnSignInt(byte1: Byte, byte2: Byte): Int =
(byte1.toInt() and 0xFF) shl 8 or (byte2.toInt() and 0xFF)
/**
* 获取整型数据的 高位 byte
* @param value 整型数据
*/
fun convertUnSignByteHeight(value: Int): Byte =
value.ushr(8).toByte()
/**
* 获取整型数据的 低位 byte
* @param value 整型数据
*/
fun convertUnSignByteLow(value: Int): Byte =
(value and 0xff).toByte()
}
时间工具
import android.annotation.SuppressLint
import java.text.SimpleDateFormat
import java.util.*
/**
* 时间工具
*
* @author D10NG
* @date on 2019-10-08 11:28
*/
object DateUtils {
/**
* 获取系统时间戳
* @return
*/
@JvmStatic
val curTime: Long
get() = System.currentTimeMillis()
@JvmStatic
val curYear: Int
get() = Integer.parseInt(getCurDateStr("yyyy"))
@JvmStatic
val curMonth: Int
get() = Integer.parseInt(getCurDateStr("MM"))
@JvmStatic
val curDay: Int
get() = Integer.parseInt(getCurDateStr("dd"))
@JvmStatic
val curHour: Int
get() = Integer.parseInt(getCurDateStr("HH"))
@JvmStatic
val curMinute: Int
get() = Integer.parseInt(getCurDateStr("mm"))
/**
* 时间戳转换成字符窜
* @param milSecond
* @param pattern
* @return
*/
@JvmStatic
fun getDateStr(milSecond: Long, pattern: String): String {
val date = Date(milSecond)
@SuppressLint("SimpleDateFormat")
val format = SimpleDateFormat(pattern, Locale.CHINESE)
return format.format(date)
}
/**
* 获取当前时间字符串
* @param pattern
* @return
*/
@JvmStatic
fun getCurDateStr(pattern: String): String {
return getDateStr(curTime, pattern)
}
/**
* 将字符串转为时间戳
* @param dateString
* @param pattern
* @return
*/
@JvmStatic
fun getDateFromStr(dateString: String, pattern: String): Long {
@SuppressLint("SimpleDateFormat")
val dateFormat = SimpleDateFormat(pattern)
var date: Date? = Date()
try {
date = dateFormat.parse(dateString)
} catch (e: Exception) {
e.printStackTrace()
}
return date?.time ?: 0
}
/**
* 根据年月日获取时间戳
*/
@JvmStatic
fun getDateFromYMD(year: Int, month: Int, day: Int) : Long {
val builder = StringBuilder()
builder.append(StringUtils.upToNString(year.toString(), 4)).append("-")
builder.append(StringUtils.upToNString(month.toString(), 2)).append("-")
builder.append(StringUtils.upToNString(day.toString(), 2))
return getDateFromStr(builder.toString(), "yyyy-MM-dd")
}
/**
* 获取指定月份的天数
* @param year
* @param month
* @return
*/
@JvmStatic
fun getDaysOfMonth(year: Int, month: Int): Int {
val calendar = Calendar.getInstance()
try {
val sdf = SimpleDateFormat("yyyy-MM-dd")
calendar.time = sdf.parse(
StringUtils.upToNString(year.toString() + "", 4) + "-" +
StringUtils.upToNString(month.toString() + "", 2) + "-01"
)!!
} catch (e: Exception) {
e.printStackTrace()
}
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH)
}
@JvmStatic
fun getDateYear(time: Long): Int {
return Integer.parseInt(getDateStr(time, "yyyy"))
}
@JvmStatic
fun getDateMonth(time: Long): Int {
return Integer.parseInt(getDateStr(time, "MM"))
}
@JvmStatic
fun getDateDay(time: Long): Int {
return Integer.parseInt(getDateStr(time, "dd"))
}
@JvmStatic
fun getDateWeek(time: Long) : String {
val cd = Calendar.getInstance(Locale.CHINESE)
cd.time = Date(time)
return when(cd.get(Calendar.DAY_OF_WEEK)) {
Calendar.SUNDAY -> "星期日"
Calendar.MONDAY -> "星期一"
Calendar.TUESDAY -> "星期二"
Calendar.WEDNESDAY -> "星期三"
Calendar.THURSDAY -> "星期四"
Calendar.FRIDAY -> "星期五"
else -> "星期六"
}
}
}