Android kotlin byte转换工具 和 时间获取与转换工具

Android kotlin byte转换工具 和 获取时间工具

代码

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 -> "星期六"
        }
    }
}

完事

发布了104 篇原创文章 · 获赞 36 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/sinat_38184748/article/details/103262841