栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:将字符串转换为压缩的十进制

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:将字符串转换为压缩的十进制

这是我的长到压缩十进制方法的版本。

public class PackedDecimal {    public static byte[] format(long number, int bytes) {        byte[] b = new byte[bytes];        final byte minusSign = 0x0D; // Minus        final byte noSign = 0x0F; // Unsigned        String s = Long.toString(number);        int length = s.length();        boolean isNegative = false;        if (s.charAt(0) == '-') { isNegative = true; s = s.substring(1); length--;        }        int extraBytes = length - bytes + 1;        if (extraBytes < 0) { // Pad extra byte positions with zero for (int i = 0; i < -extraBytes; i++) {     b[i] = 0x00; }        } else if (extraBytes > 0) { // Truncate the high order digits of the number to fit s = s.substring(extraBytes); length -= extraBytes; extraBytes = 0;        }        // Translate the string digits into bytes        for (int i = 0; i < length; i++) { String digit = s.substring(i, i + 1); b[i - extraBytes] = Byte.valueOf(digit);        }        // Add the sign byte        if (isNegative) { b[bytes - 1] = minusSign;        } else { b[bytes - 1] = noSign;        }        return b;    }    public static void main(String[] args) {        long number = -456L;        byte[] b = PackedDecimal.format(number, 5);        System.out.println("Number: " + number + ", packed: " + byteToString(b));        number = 0L;        b = PackedDecimal.format(number, 5);        System.out.println("Number: " + number + ", packed: " + byteToString(b));        number = 5823L;        b = PackedDecimal.format(number, 5);        System.out.println("Number: " + number + ", packed: " + byteToString(b));        number = 123456L;        b = PackedDecimal.format(number, 5);        System.out.println("Number: " + number + ", packed: " + byteToString(b));    }    public static String byteToString(byte[] b) {        StringBuilder sb = new StringBuilder();        for (int i = 0; i < b.length; i++) { sb.append("0x"); sb.append(Integer.toHexString((int) b[i]).toUpperCase()); sb.append(" ");        }        return sb.toString();    }}

这是测试结果。

Number: -456, packed: 0x0 0x4 0x5 0x6 0xD Number: 0, packed: 0x0 0x0 0x0 0x0 0xF Number: 5823, packed: 0x5 0x8 0x2 0x3 0xF Number: 123456, packed: 0x3 0x4 0x5 0x6 0xF


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号