`
zsj01005432
  • 浏览: 43273 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ip地址,子网掩码,日期转换相关工具方法

 
阅读更多
/**
 *
 */
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.Vector;
import java.math.BigDecimal;


public class FormatUtil {
    private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    private static NumberFormat numFormat = NumberFormat.getNumberInstance();

    private static NumberFormat percentFormat = NumberFormat.getPercentInstance();

    private FormatUtil() {

    }

    /**
     * 获取IP地址对应的主机域名,如果enalbelDNS为false,仅仅返回IP地址
     * @param s IP地址
     * @return 主机域名或IP地址
     * @throws UnknownHostException
     */
    public static String getDNSName(String s) throws UnknownHostException {
        InetAddress addr = InetAddress.getByName(s);
        String dns = addr.getHostName().trim();
        return dns.toLowerCase();
    }

    /**
     * 判断ipaddress是否属于私有地址
     * @param ipaddress
     * @return
     */
    public static boolean isPrivateIP(String ipaddress) throws ParseException {
        boolean flag = false;
        flag = isAddressInRange(ipaddress, "10.0.0.0", "10.255.255.255");

        if (!flag) {
            flag = isAddressInRange(ipaddress, "172.16.0.0", "172.31.255.255");
        }
        if (!flag) {
            flag = isAddressInRange(ipaddress, "192.168.0.0", "192.168.255.255");
        }
        if (!flag) {
            flag = isAddressInRange(ipaddress, "127.0.0.0", "127.255.255.255");
        }
        return flag;
    }

    /**
     * 校验是否为合法的IP地址
     * @param ipAddr
     * @return
     */
    public static boolean isValidIPAddr(String ipAddr) {
        try {
            getAddrArray(ipAddr);
            return true;
        } catch (ParseException e) {
            return false;
        }
    }

    public static boolean isValidNetmask(String ipAddr) {
        if (ipAddr == null) {
            return false;
        }

        StringTokenizer stringtokenizer = new StringTokenizer(ipAddr, ".");
        if (stringtokenizer.countTokens() != 4) {
            return false;
        }
        int ai[] = new int[4];
        try {
            for (int i = 0; i < 4; i++) {
                ai[i] = Integer.parseInt(stringtokenizer.nextToken());

            }
        } catch (NumberFormatException numberformatexception) {
            return false;
        }

        boolean evenFlag;
        if (ai[3] % 2 == 0) {
            evenFlag = true;
        } else {
            evenFlag = false;
        }
        if (!evenFlag) {
            // 应全是奇数
            for (int j = 3; j >= 0; j--) {
                // 将四个整数从上到下依次解析为二进制数,
                if (ai[j] == 0) {
                    return false;
                }

                while (ai[j] > 0) {
                    if (ai[j] % 2 == 0) {
                        return false;
                    }
                    ai[j] = ai[j] >> 1;

                }
            }
        } else {
            // 遇到奇数后就全是奇数
            for (int j = 3; j >= 0; j--) {
                if (ai[j] % 2 == 0) {
                    if (!evenFlag) {
                        return false;
                    }
                } else {
                    evenFlag = false;
                }

                while (ai[j] > 0) {
                    if (ai[j] % 2 == 0) {
                        if (!evenFlag) {
                            return false;
                        }
                    } else {
                        evenFlag = false;
                    }
                    ai[j] = ai[j] >> 1;
                }
            }
        }

        return true;

    }

    public static boolean isBroadcastAddr(String s) throws ParseException {
        long l = getAddrLong(s);
        long l1 = getAddrLong("0.0.0.255");
        long l2 = l & l1;
        return l2 == 255L;
    }

    /**
     * 检查一个IP地址是否在一些IP地址段内
     * @param s IP地址
     * @param vector 最小IP地址组
     * @param vector1 最大IP地址组
     * @return 该IP地址是否在范围内
     */
    public static boolean isAddressInRange(String s, Vector vector, Vector vector1) throws ParseException {
        if (vector == null || vector1 == null) {
            return true;
        }
        if (vector.size() != vector1.size()) {
            // TODO 抛出异常,异常要国际化
            return false;
        }
        long l = getAddrLong(s);
        if (l == 0L) {
            return false;
        }
        for (int i = 0; i < vector.size(); i++) {
            long l1 = getAddrLong((String) vector.elementAt(i));
            long l2 = getAddrLong((String) vector1.elementAt(i));
            if (l <= l2 && l >= l1) {
                return true;
            }
        }
        return false;
    }

    /**
     * 校验两个子网是否有交叉
     * @param srcIpAddr
     * @param srcNetmask
     * @param destIpAddr
     * @param destNetmask
     * @return
     */
    public static boolean isNetInterCross(String srcIpAddr, String srcNetmask, String destIpAddr, String destNetmask) {
        boolean flag = false;
        try {
            if (FormatUtil.inNet(srcIpAddr, destIpAddr, destNetmask)) {
                flag = true;
            } else {
                String srcEndIpAddr = FormatUtil.getNetEndIP(srcIpAddr, srcNetmask);
                if (FormatUtil.inNet(srcEndIpAddr, destIpAddr, destNetmask)) {
                    flag = true;
                } else {
                    if (FormatUtil.inNet(destIpAddr, srcIpAddr, srcNetmask)) {
                        flag = true;
                    } else {
                        String destEndIpAddr = FormatUtil.getNetEndIP(destIpAddr, destNetmask);
                        if (FormatUtil.inNet(destEndIpAddr, srcIpAddr, srcNetmask)) {
                            flag = true;
                        }
                    }

                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

    /**
     * 检查一个IP地址是否在一些IP地址段内
     * @param s IP地址
     * @param vector 最小IP地址组
     * @param vector1 最大IP地址组
     * @return 该IP地址是否在范围内
     */
    public static boolean isAddressInRange(String ip, String startIP, String endIP) throws ParseException {
        if (ip == null || (startIP == null && endIP == null)) {
            return true;
        }
        long l = getAddrLong(ip);
        if (l == 0L) {
            return false;
        }
        boolean flag = true;
        if (startIP != null) {
            long l1 = getAddrLong(startIP);
            if (l < l1) {
                flag = false;
            }
        }
        if (endIP != null) {
            long l2 = getAddrLong(endIP);
            if (l > l2) {
                flag = false;
            }
        }
        return flag;
    }

    /**
     * 检查一个IP地址是否在一个子网范围内
     * @param s IP地址
     * @param s1 子网地址
     * @param s2 子网掩码
     * @return IP地址是否在一个子网内
     */
    public static boolean inNet(String s, String s1, String s2) throws ParseException {
        if (s2.equals("255.255.255.255")) {
            if (s.equals(s1)) {
                return true;
            }
            return false;
        }
        long l = getAddrLong("255.255.255.255");
        long l1 = getAddrLong(s2);
        long l2 = getAddrLong(s1);
        l2 &= l1;
        long l3 = l ^ l1;
        long l4 = getAddrLong(s);
        if (l4 == 0L) {
            return false;
        }
        return l4 < l2 + l3 && l4 >= l2;
    }

    /**
     * 获取给定子网掩码的子网所包括的IP地址个数
     * @param s 以字符串表示网络地址
     * @param s1 以字符串表示的子网掩码
     * @return 子网所包括的IP地址个数,用long值表示
     */
    public static long getNumIPs(String s, String s1) throws ParseException {
        long l = getAddrLong("255.255.255.255");
        long l1 = getAddrLong(s1);
        if (l1 == l) {
            return 0L;
        }
        long l2 = getAddrLong(s);
        long l3 = l ^ l1;
        if (l1 == 0L || l2 == 0L || l1 > l || l3 > l) {
            throw new ParseException("ErrorIPFormat" + s + " " + s1, -1);
        }
        return l3;
    }

    public static String getNetworkNetMask(String network, String netmask) throws ParseException {
        if (network == null || netmask == null) {
            throw new ParseException("ErrorIPFormat" + network + " " + netmask,-1);
        }
        long l = getAddrLong("255.255.255.255");
        long l1 = getAddrLong(netmask);
        long l3 = l ^ l1;
        int num = 0;
        while (l3 > 0) {
            num++;
            l3 = l3 >> 1;
        }
        return network + "/" + (32 - num);
    }

    public static String[] parseNetworkNetMask(String networkNetmask) throws ParseException {

        if (networkNetmask == null) {
            throw new ParseException("ErrorIPFormat" + networkNetmask, -1);
        }
        int index = networkNetmask.indexOf("/");
        if (index == -1) {
            return null;
        }
        String netip = networkNetmask.substring(0, index);
        int num = 0;
        try {
            num = Integer.parseInt(networkNetmask.substring(index + 1));
            if (num > 32) {
                return null;
            }
        } catch (Exception ee) {
            return null;
        }
        long l = 1;

        int count = num;
        while (count > 1) {
            count--;
            l = (l << 1) + 1;
        }
        count = 32 - num;
        while (count > 0) {
            count--;
            l = l << 1;
        }
        String[] network = new String[2];
        network[0] = netip;
        network[1] = getAddrString(l);
        return network;
    }

    public static String getNetMask(String startip, String endip) throws ParseException {
        if (startip == null || endip == null) {
            throw new ParseException("ErrorIPFormat" + startip + " " + endip, -1);
        }
        long l = getAddrLong(startip);
        long l1 = getAddrLong(endip);
        long l2 = ~(l1 ^ l);
        return getAddrString(l2);
    }

    /**
     * @param startip
     * @param netmask
     * @return
     */
    public static String getNetEndIP(String startip, String p_netmask) throws ParseException {
        String netmask = p_netmask;
        if (startip != null && netmask != null) {
            if (startip.equals(netmask)) {
                netmask = "255.255.255.0";
            }
            if (netmask.equals("0.0.0.0")) {
                netmask = "255.255.255.0";
            }
        }
        long l = getAddrLong(startip);
        long l1 = getAddrLong(netmask);
        long l2 = ~l1 | l;
        return getAddrString(l2);
    }

    /**
     * 从一个给定IP(可能是节点地址)和子网掩码,获取子网地址
     * @param s IP地址
     * @param s1 子网掩码
     * @return 子网地址
     */
    public static String getNetAddr(String s, String p_s1) throws ParseException {
        String s1 = p_s1;
        if (s != null && s1 != null) {
            if (s.equals(s1)) {
                s1 = "255.255.255.0";
            }
            if (s1.equals("0.0.0.0")) {
                s1 = "255.255.255.0";
            }
        }
        long l = getAddrLong(s1);
        long l1 = getAddrLong(s);
        long l2 = l1 & l;
        return getAddrString(l2);
    }

    /**
     * 获取一个IP数组内最小或最大IP地址
     * @param vector IP地址数组
     * @param flag 是否是最大IP地址
     * @return 最大或最小IP地址
     */
    public static String getMinMaxAddr(Vector vector, boolean flag) throws ParseException {
        String s = (String) vector.firstElement();
        long l = getAddrLong(s);
        for (int i = 1; i < vector.size(); i++) {
            String s1 = (String) vector.elementAt(i);
            long l1 = getAddrLong(s1);
            if (!flag) {
                if (l1 < l) {
                    s = s1;
                    l = l1;
                }
            } else if (l1 > l) {
                s = s1;
                l = l1;
            }
        }
        return s;
    }

    /**
     * 获取一个子网内的所有IP地址
     * @param ip 网络地址
     * @param mask 网络掩码
     * @return IP地址字符数组
     */
    public static String[] getIPList(String ip, String mask) throws ParseException {
        String as[] = null;
        long l = getAddrLong("255.255.255.255");
        long l1 = getAddrLong(mask);
        if (l1 == l) {
            as = new String[1];
            as[0] = ip;
            return as;
        }
        long l2 = getAddrLong(ip);
        long l3 = l ^ l1;
        if (l1 == 0L || l2 == 0L || l1 > l || l3 > l) {
            throw new ParseException("ErrorIPFormat" + ip + " " + mask, -1);
        }
        if (l3 > 0x10000L) {
            throw new ParseException("ErrorIPFormat" + ip + " " + mask, -1);
        }
        if (l3 == 2L) {
            as = new String[1];
            as[0] = getAddrString(l2 + 1L);
            return as;
        }
        if ((l2 + l3) - 1L > l) {
            throw new ParseException(I18nUtil.getInstance().getValue("ErrorIPFormat") + ip + " " + mask, -1);
        }
        as = new String[(int) l3 - 1];
        for (int i = 0; i < l3 - 1; i++) {
            as[i] = getAddrString(l2 + 1L + i);
        }
        return as;
    }

    /**
     * 获取主机域名对应的IP地址
     * @param s 主机域名
     * @return 主机域名对应的IP地址,如果找不到相应的IP地址,返回主机域名
     */
    public static String getIP(String s) throws UnknownHostException {
        InetAddress addr = InetAddress.getByName(s);
        String ip = addr.getHostAddress().trim();
        return ip;
    }

    /**
     * 基于给定的网络地址,得到特定网络的缺省子网掩码。 这个方法基于对A、B、C类网络的猜测,返回相应的子网掩码。
     * @param s - 字符串表示的网络地址.
     * @return 缺省的网络掩码
     * @throws ParseException
     */
    public static String getDefaultNetMask(String s) throws ParseException {
        int ai[] = getAddrArray(s);
        if (ai[0] < 128) {// A类地址
            return "255.0.0.0";
        }
        if (ai[0] < 192) { // B类地址
            return "255.255.0.0";
        }
        // C、D、E类地址
        return "255.255.255.0";
    }

    /**
     * 将IP地址转换为long型值,这个方法检查输入的有效性
     * @param s IP地址
     * @return IP地址对应的long型值
     * @throws ParseException
     */
    public static long getAddrLong(String s) throws ParseException {
        int ai[] = getAddrArray(s);
        long l = 0L;
        for (int i = 0; i < 4; i++) {
            l |= (long) ai[i] << 8 * (3 - i);
        }
        return l;
    }

    /**
     * 将点分十进制表示的IP地址转换为长度为4的数组
     * @param s IP地址
     * @return 长度为4的数组,存放点号分开的值
     * @throws ParseException
     */
    public static int[] getAddrArray(String p_s) throws ParseException {
        String s = p_s;
        if (s == null) {
            throw new ParseException(I18nUtil.getInstance().getValue("ErrorIPFormat") + s, -1);
        }
        s = s.trim();
        StringTokenizer stringtokenizer = new StringTokenizer(s, ".");
        if (stringtokenizer.countTokens() != 4) {
            throw new ParseException(I18nUtil.getInstance().getValue("ErrorIPFormat") + s, stringtokenizer
                    .countTokens());
        }
        int ai[] = new int[4];
        for (int i = 0; i < 4; i++) {
            try {
                ai[i] = Integer.parseInt(stringtokenizer.nextToken());
            } catch (NumberFormatException numberformatexception) {
                throw new ParseException("ErrorIPFormat" + s, i);
            }
        }
        for (int i = 0; i < 4; i++) {
            if (ai[i] < 0 || ai[i] > 255) {
                throw new ParseException("ErrorIPFormat" + s, i);
            }
        }
        return ai;
    }

    /**
     * 将一个long型值转换为一个IP地址串,这个方法并不检查输入的有效性。
     * @param l long值数据
     * @return IP地址
     */
    public static String getAddrString(long l) {
        int ai[] = new int[4];
        for (int i = 0; i < 4; i++) {
            ai[i] = (int) (l >> 8 * (3 - i) & 255L);
        }
        return new String(ai[0] + "." + ai[1] + "." + ai[2] + "." + ai[3]);
    }

    /**
     * 获得一个yyyy-mm-dd hh:mm:ss格式的字符串的每个域的值
     * @param dateTime yyyy-mm-dd hh:mm:ss格式的字符串
     * @return 数组从0到5的六个元素分别是年,月,日,时,分,秒
     */
    public static String[] parseDateTime(String dateTime) {
        String[] result = new String[6];
        StringTokenizer token = new StringTokenizer(dateTime, " ");
        String date = token.nextToken();
        String time = token.nextToken();

        StringTokenizer dateToken = new StringTokenizer(date, "-");
        result[0] = dateToken.nextToken();
        result[1] = dateToken.nextToken();
        result[2] = dateToken.nextToken();

        StringTokenizer timeToken = new StringTokenizer(time, ":");
        result[3] = timeToken.nextToken();
        result[4] = timeToken.nextToken();
        result[5] = timeToken.nextToken();

        return result;
    }

    /**
     * 获得一个hh:mm:ss格式的字符串的每个域的值
     * @param time hh:mm:ss格式的字符串
     * @return 数组从0到2的三个元素分别是时,分,秒
     */
    public static String[] parseTime(String time) {
        String[] result = new String[3];
        StringTokenizer timeToken = new StringTokenizer(time, ":");
        result[0] = timeToken.nextToken();
        result[1] = timeToken.nextToken();
        result[2] = timeToken.nextToken();
        return result;
    }

    public static String to_Oracle_Date(String dateStr) {
        return "to_date('" + dateStr + "','yyyy-mm-dd hh24:mi:ss')";
    }

    public static String to_Oracle_Char(String dateField) {
        return "to_char(" + dateField + ",'yyyy-mm-dd hh24:mi:ss')";
    }

    /**
     * 将日期类型格式化成 yyyy-mm-dd hh24:mi:ss 格式
     * @param date
     * @return
     */
    public static String formatDate(Date date) {
        return simpleDateFormat.format(date);
    }

    /**
     * 将日期类型格式转换为yyyyMMddHHmmss的格式
     * @param date
     * @return
     */
    public static String formatDateToNumber(Date date) {
        if (date == null) {
            return "";
        }
        SimpleDateFormat df = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
        return df.format(date);
    }

    /**
     * 将Web端如:2007-2-8 12:12:12 转换long型(以便入库)
     * @param str
     * @return
     */
    public static long formatDateToLong(String str) {
        long flag = 0;
        if (str != null && !str.equals("")) {
            try {
                flag = parseDate(str).getTime();
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return flag;
    }

    /**
     * 根据数据库中long型时间,转换为时间的String到Web端显示
     * @param time
     * @return
     */
    public static String formatDateToString(long time) {
        String flag = "";
        if (time > 0) {
            flag = formatDate(new Date(time));
        }
        return flag;
    }

    /**
     * 从 yyyy-mm-dd hh24:mi:ss 格式的字符串中生成日期
     * @param str
     * @return
     * @throws ParseException
     */
    public static Date parseDate(String str) throws ParseException {
        return simpleDateFormat.parse(str);
    }

    public static Number parseNumber(String str) throws ParseException {
        return numFormat.parse(str);
    }

    /**
     * 格式化Number
     * @param value
     * @param minDigit 小数点后最小位数
     * @param maxDigit 小数点后最大位数
     * @return
     */
    public static String formatValue(Number number, int minDigit, int maxDigit) {
        synchronized (numFormat) {
            if (numFormat.getMaximumFractionDigits() != maxDigit) {
                numFormat.setMaximumFractionDigits(maxDigit);
            }
            if (numFormat.getMinimumFractionDigits() != minDigit) {
                numFormat.setMinimumFractionDigits(minDigit);
            }
            return numFormat.format(number);
        }
    }

    public static Number parsePercent(String str) throws ParseException {
        return percentFormat.parse(str);
    }

    /**
     * 格式化百分数
     * @param number
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String formatPercent(Number number, int minDigit, int maxDigit) {
        synchronized (percentFormat) {
            if (percentFormat.getMaximumFractionDigits() != maxDigit) {
                percentFormat.setMaximumFractionDigits(maxDigit);
            }
            if (percentFormat.getMinimumFractionDigits() != minDigit) {
                percentFormat.setMinimumFractionDigits(minDigit);
            }
            return percentFormat.format(number);
        }
    }

    /**
     * 格式化百分数
     * @param number
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String formatPercent(double number, int minDigit, int maxDigit) {
        synchronized (percentFormat) {
            if (percentFormat.getMaximumFractionDigits() != maxDigit) {
                percentFormat.setMaximumFractionDigits(maxDigit);
            }
            if (percentFormat.getMinimumFractionDigits() != minDigit) {
                percentFormat.setMinimumFractionDigits(minDigit);
            }
            return percentFormat.format(number);
        }
    }

    /**
     * 格式化百分数
     * @param number
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String formatPercent(float number, int minDigit, int maxDigit) {
        synchronized (percentFormat) {
            if (percentFormat.getMaximumFractionDigits() != maxDigit) {
                percentFormat.setMaximumFractionDigits(maxDigit);
            }
            if (percentFormat.getMinimumFractionDigits() != minDigit) {
                percentFormat.setMinimumFractionDigits(minDigit);
            }
            return percentFormat.format(number);
        }
    }

    /**
     * 格式化float
     * @param value
     * @param minDigit 小数点后最小位数
     * @param maxDigit 小数点后最大位数
     * @return
     */
    public static String formatValue(float value, int minDigit, int maxDigit) {
        synchronized (numFormat) {
            if (numFormat.getMaximumFractionDigits() != maxDigit) {
                numFormat.setMaximumFractionDigits(maxDigit);
            }
            if (numFormat.getMinimumFractionDigits() != minDigit) {
                numFormat.setMinimumFractionDigits(minDigit);
            }
            return numFormat.format(value);
        }
    }

    /**
     * 格式化double
     * @param value
     * @param minDigit 小数点后最小位数
     * @param maxDigit 小数点后最大位数
     * @return
     */
    public static String formatValue(double value, int minDigit, int maxDigit) {
        synchronized (numFormat) {
            if (numFormat.getMaximumFractionDigits() != maxDigit) {
                numFormat.setMaximumFractionDigits(maxDigit);
            }
            if (numFormat.getMinimumFractionDigits() != minDigit) {
                numFormat.setMinimumFractionDigits(minDigit);
            }
            return numFormat.format(value);
        }
    }

    /**
     * 获取流量速度的字符串
     * @param value
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String getbpsString(double p_value, int minDigit, int maxDigit) {
        double value = p_value;
        if (value > 1000) {
            value /= 1000;
            if (value > 1000) {
                value /= 1000;
                if (value > 1000) {
                    value /= 1000;
                    return formatValue(value, minDigit, maxDigit) + "Gbps";
                }
                return formatValue(value, minDigit, maxDigit) + "Mbps";
            }
            return formatValue(value, minDigit, maxDigit) + "Kbps";
        }
        return formatValue(value, 0, 0) + "bps";
    }

    public static String getBytesPerSecString(double p_value, int minDigit, int maxDigit) {
        double value = p_value;
        if (value > 1024) {
            value /= 1024;
            if (value > 1024) {
                value /= 1024;
                if (value > 1024) {
                    value /= 1024;
                    return formatValue(value, minDigit, maxDigit) + "GB/S";
                }
                return formatValue(value, minDigit, maxDigit) + "MB/S";
            }
            return formatValue(value, minDigit, maxDigit) + "KB/S";
        }
        return formatValue(value, 0, 0) + "B/S";
    }

    /**
     * 获取速度的字符串
     * @param value
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String getPsString(double p_value, int minDigit, int maxDigit, String unit) {
        double value = p_value;
        if (value >= 1024) {
            value /= 1024;
            if (value >= 1024) {
                value /= 1024;
                if (value >= 1024) {
                    value /= 1024;
                    return formatValue(value, minDigit, maxDigit) + "G" + unit;
                }
                return formatValue(value, minDigit, maxDigit) + "M" + unit;
            }
            return formatValue(value, minDigit, maxDigit) + "K" + unit;
        }
        return formatValue(value, 0, 0) + unit;
    }

    /**
     * 获取字节大小的字符串
     * @param value
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String getBytesString(double p_value, int minDigit, int maxDigit) {
        double value = p_value;
        if (value > 1024) {
            value /= 1024;
            if (value > 1024) {
                value /= 1024;
                if (value > 1024) {
                    value /= 1024;
                    return formatValue(value, minDigit, maxDigit) + "GB";
                }
                return formatValue(value, minDigit, maxDigit) + "MB";
            }
            return formatValue(value, minDigit, maxDigit) + "KB";
        }
        return formatValue(value, 0, 0) + "B";

    }

    public static String getPeriodString(long seconds) {
        long hour = seconds / 3600;
        long minute = (seconds % 3600) / 60;
        long second = (seconds % 3600) % 60;
        String period = "";
        if (hour > 0)
            period = period + hour + I18nUtil.getInstance().getValue("Hour");
        if (minute > 0)
            period = period + minute + I18nUtil.getInstance().getValue("Minute");
        if (second > 0)
            period = period + second + I18nUtil.getInstance().getValue("Second");
        return period;
    }

    public static String getPeriodByMS(long ms) {
        if (ms == 0) {
            return ("0ms");
        }
        long hour = ms / 3600000;
        long ret = ms % 3600000;
        long minute = ret / 60000;
        ret %= 60000;
        long second = ret / 1000;
        long mSecond = ret % 1000;
        String period = "";
        if (hour > 0) {
            period += hour + "h";
        }

        if (minute > 0) {
            period += minute + "m";
        }

        if (second > 0) {
            period += second + "s";
        }
        if (mSecond > 0) {
            period += mSecond + "ms";
        }
        return period;
    }

    /**
     * 从i18n文件中读取的"\n"符不再是一个字符,所以需要替换,将读取出来的字符串转成有换行符的合法串
     * @param str
     * @return
     */
    public static String getNewLineString(String p_str) {
        String str = p_str;
        if (str == null) {
            return null;
        }

        byte[] x = { 92, 110 }; // 从i18n文件中读取的"\n"的byte值
        String newline = new String(x);
        int idx = str.indexOf(newline);
        String tmp = "";
        while (idx > 0) {
            tmp = str.substring(0, idx) + "\n" + str.substring(idx + 2);
            str = tmp;
            idx = str.indexOf(newline);
        }

        return str;
    }

    /**
     * 获取当前系统时间的前n个时刻的时间 例:传入1,当前系统时间为(2007-10-11 10:12:12 的毫秒数表示) 返回时间为 (2007-10-11 9:45:00 的毫秒数表示)
     * @param preQuarterCount
     * @return Date==〉
     * @author wenju
     */
    public static Date getDatePreQuarter(int preQuarterCount) {
        int QUARTER_MILL = 900000;
        long currentMill = System.currentTimeMillis();
        long needReduce = currentMill % QUARTER_MILL;
        needReduce += QUARTER_MILL * preQuarterCount;
        currentMill -= needReduce;
        return new Date(currentMill);

    }

		/**
     * 获取流量字节数
     * @param value
     * @param minDigit
     * @param maxDigit
     * @return
     */
    public static String getbyteString(long bytes) {
        BigDecimal filesize  =   new  BigDecimal(bytes);
		BigDecimal gegabyte  =   new  BigDecimal( 1024 * 1024 * 1024 );
        float  returnValue  =  filesize.divide(gegabyte,  2 , BigDecimal.ROUND_UP).floatValue();
        if(returnValue>1){
           return (returnValue + "GB" );
		}
        BigDecimal megabyte  =   new  BigDecimal( 1024 * 1024 );
        returnValue  =  filesize.divide(megabyte,  2 , BigDecimal.ROUND_UP).floatValue();
        if(returnValue>1 ){
           return (returnValue + "MB" );
		}
        BigDecimal kilobyte  =   new  BigDecimal(1024);
        returnValue  =  filesize.divide(kilobyte,2,BigDecimal.ROUND_UP).floatValue();
		if(returnValue>1 ){
        return (returnValue + "KB" );
		}
		return (bytes + "B");
    }

	 /**
     * 格式化Double(保留位,非四舍五入)
     * @param number
     * @param maxDigit
     * @return
     */
    public static String formatdouble(double ratio,int maxDigit){
		String ratiostr=String.valueOf(ratio);
		ratiostr=ratiostr.replace('.',',');
		String Rate=ratiostr;
		String[] ratiolist=ratiostr.split(",");
		if(maxDigit>0){
		if(ratiolist.length>1){
			if(ratiolist[1].length()>=maxDigit){
				Rate=ratiolist[0]+"."+ratiolist[1].substring(0,maxDigit);
			}else{
				String str="";
				for(int i=ratiolist[1].length();i<maxDigit;i++){
					str+="0";
				}
				Rate=ratiolist[0]+"."+ratiolist[1]+str;
			}
		}else{
			String str="";
			for(int i=0;i<maxDigit;i++){
				str+="0";
			}
			Rate=ratiolist[0]+"."+str;
		}
		}else{
			Rate=ratiolist[0];
		}
		return Rate;
	}

}

分享到:
评论

相关推荐

    IP地址子网掩码计算器

    下面我们将深入探讨IP地址子网掩码计算器及其对网络管理的重要性。 IP地址由32位二进制组成,通常以点分十进制的形式表示,如192.168.1.1。它分为两部分:网络ID和主机ID。网络ID定义了设备所在的网络,而主机ID则...

    IP地址与子网掩码的学习心得

    "IP地址与子网掩码的学习心得" 在计算机网络中,IP地址和子网掩码是两个非常重要的概念,了解它们之间的关系是非常必要的。...本文对IP地址和子网掩码的概念进行了详细的解释,并对相关的知识点进行了总结。

    易语言本机IP地址、子网掩码、DNS服务器地址设置

    "易语言本机IP地址、子网掩码、DNS服务器地址设置"是一个针对这些网络参数进行编程操作的主题,主要涉及Windows操作系统下的网络配置。易语言是一种以中文为编程语法的编程环境,它使得非计算机专业人员也能更容易地...

    C语言 根据IP,子网掩码计算广播地址

    1. 将IP地址和子网掩码转换为整数数组,每个八位段对应一个整数。 2. 对IP地址的每个八位段执行逻辑或运算,操作数是子网掩码相应八位段的反码(即全部为1)。在C语言中,可以使用`~`运算符实现反码。 3. 将得到的...

    IP 子网掩码计算工具 V1.0.0.0

    IP子网掩码计算工具V1.0.0.0是一款专为网络管理员和IT专业人员设计的实用软件,它能够帮助用户高效地进行IP地址与子网掩码的相关计算,简化网络规划与管理的工作。本文将详细介绍这款工具的功能、工作原理以及如何...

    子网掩码计算工具计算工具子网掩码计算工具子网掩码计算工具

    这些工具通常要求用户输入IP地址和所需的子网数量,然后自动计算出子网掩码和各子网的网络地址。在提供的"子网掩码计算工具"文件中,可能包含了这样一个工具,能够简化网络管理员的工作,避免手动计算时可能出现的...

    IP地址与子网掩码

    - 新子网掩码转换为二进制形式为:11111111.11111111.11111111.11000000。 - 十进制形式为:255.255.255.192。 通过这种方式,原来的C类地址被划分为4个子网: 1. 192.168.0.0/26 -&gt; 192.168.0.0 - 192.168.0.63 2...

    IP地址知识_子网掩码与子网划分

    1. **IP地址与子网掩码的二进制转换**:将IP地址和子网掩码转换成二进制形式。 2. **与运算求网络地址**:将IP地址与子网掩码进行“与”运算,结果即为网络地址。 3. **求主机地址**:首先将子网掩码取反,然后与IP...

    子网掩码计算java实现方法

    实现通过ip地址和子网掩码位数计算得出子网段的ip地址范围

    子网掩码换算工具

    5. **IP地址计算器**:计算任意IP地址在子网中的位置,以及与其相关的网络和广播地址。 了解和使用子网掩码换算工具,对于网络管理员、系统管理员以及学习网络技术的学生来说是非常有价值的。它们可以帮助用户更...

    c语言实现设置ip、网关、子网掩码 时间字符串相互转换

    你可以使用`ifconfig`命令行工具来获取或修改网络接口的IP地址、网关和子网掩码,但在程序中实现这一功能则需要利用`sys/socket.h`、`arpa/inet.h`和`net/if.h`等头文件中的函数。例如,`inet_aton()`函数用于将IPv4...

    易语言源码本机IP地址、子网掩码、DNS服务器地址设置.rar

    在这个"易语言源码本机IP地址、子网掩码、DNS服务器地址设置.rar"压缩包中,包含的是使用易语言编写的程序,用于获取和设置本机的网络配置信息,如IP地址、子网掩码以及DNS服务器地址。 在计算机网络中,IP地址是...

    c#中获取本地ip地址、子网掩码、广播地址

    在C#中,我们可以使用`BitConverter`类将IP地址和子网掩码转换为字节数组,然后对字节进行逐位或运算,最后再转换回IP地址: ```csharp public static IPAddress CalculateBroadcastAddress(IPAddress ip, IP...

    子网掩码计算器(保证是你见过的最好的支持IPV6)

    3. **CIDR表示法转换**:CIDR(无类别域间路由)是一种将IP地址和子网掩码结合在一起的表示方法,计算器能够处理CIDR记法,并转换为常规的IP和子网掩码形式。 4. **网络规划**:对于大型网络,子网掩码计算器可以...

    子网掩码IP计算器 子网掩码IP计算器

    无论是小型家庭网络还是大型企业网络,理解和掌握子网掩码与IP地址的关系以及如何使用相关工具都是必要的网络基础技能。通过深入学习和实践,你可以更加熟练地运用子网掩码IP计算器解决各种网络问题,提升网络管理...

    子网掩码换算工具.rar

    - NetMask.exe:可能是一个图形界面的应用程序,允许用户输入IP地址和子网掩码,或者反之,进行转换和验证。 - subnet10.exe:可能同样提供类似的子网掩码计算功能,可能专注于10类IP地址的子网划分,或者包含更...

    小巧的子网掩码计算工具

    1. 输入IP地址和子网掩码:用户可以直接输入IP地址,工具会自动转换为二进制并进行计算。 2. 自动计算子网掩码:用户只需输入网络ID和需要的子网数,工具会计算出合适的子网掩码。 3. 子网划分:根据子网掩码,工具...

    子网掩码计算工具合集

    1. **子网划分**:用户输入一个IP地址和所需的子网数量,工具会自动计算出新的子网掩码和每个子网的范围。这在规划大型网络或者需要将网络划分为多个独立区域时非常有用。 2. **CIDR(无类别域间路由)表示法转换**...

    子网掩码子网掩码计算器

    子网掩码是IP地址分配中的一个重要概念,用于标识网络部分和主机部分,在TCP/IP协议栈中起到关键作用。在互联网上,每个设备都有一个唯一的IP地址,由四组数字(0-255)组成,用点分十进制表示。而子网掩码则是与IP...

    C#根据IP地址和子网掩码计算广播地址

    代码首先使用`IPAddress.Parse`方法将传入的字符串转换为`byte[]`类型的数组,分别存储IP地址和子网掩码的二进制表示。然后,对这两个数组的每一个元素执行逻辑“非”(`~`)和逻辑“或”(`|`)操作,这是计算广播...

Global site tag (gtag.js) - Google Analytics