首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

十六进制格式化展示-象UltraEdit的Ctrl+H(打印16进制)的功能

2011-12-15 
十六进制格式化显示--象UltraEdit的Ctrl+H(打印16进制)的功能一个象UltraEdit的Ctrl+H(打印16进制)的功能

十六进制格式化显示--象UltraEdit的Ctrl+H(打印16进制)的功能
一个象UltraEdit的Ctrl+H(打印16进制)的功能
例如:::
   
  String s = "这是测试examples!" ;

显示为:

00000000h: B2 E2 CA D4 65 78 61 6D 70 6C 65 73 21 ;测试examples!

[解决办法]

Java code
    String s = "测试examples!";        byte[] b = s.getBytes();        for (int i = 0; i < b.length; i++) {            System.out.print(Integer.toHexString(b[i] & 0xFF) + " ");        }        System.out.println();//输出 b2 e2 ca d4 65 78 61 6d 70 6c 65 73 21
[解决办法]
一般就是问个思路,这种只是耗时间排版的工作自己做比较好...
代码如下:
Java code
         /**     * 文字转16进制     *      * @param s     */    public void String2Hex(String s) {        byte[] b = s.getBytes();        for (int i = 0; i < b.length; i++) {            int row = i / 16;// 行            int col = i % 16;// 列            if (col == 0)// 行头                System.out.print(getLineHead(row));            System.out.print(Integer.toHexString(b[i] & 0xFF) + " ");            if (col == 15 || i == b.length - 1)// 行尾                System.out.println(getLineTail(b, row * 16, i % 16 + 1));        }    }    /**     * 得到行头     *      * @param k     *            当前行数     * @return     */    private String getLineHead(int k) {        String head = "000000";        head += Integer.toHexString(k) + "0h: ";        if (head.length() > 11)            return head.substring(head.length() - 9, head.length());        else            return head;    }    /**     * 得到行尾     *      * @param b     *            字节数组     * @param off     *            偏移位置     * @param len     *            长度     * @return     */    private String getLineTail(byte[] b, int off, int len) {        StringBuffer tail = new StringBuffer();        for (int i = 0; i < 16 - len; i++)            tail.append("   ");        tail.append("; " + new String(b, off, len));        return tail.toString();    }    //String s = "这是测试examples!";    //String2Hex(s);        //输出:        //00000000h: d5 e2 ca c7 b2 e2 ca d4 65 78 61 6d 70 6c 65 73 ; 这是测试examples        //00000010h: 21                                              ; !
[解决办法]
SORRY,得到行头的方法有点问题,应该如下:(head.length() - 9 应改为head.length() - 11)
Java code
/**     * 得到行头     *      * @param k     *            当前行数     * @return     */    private String getLineHead(int k) {        String head = "000000";        head += Integer.toHexString(k) + "0h: ";        if (head.length() > 11)            return head.substring(head.length() - 11, head.length());        else            return head;    }
[解决办法]
探讨
SORRY,得到行头的方法有点问题,应该如下:(head.length() - 9 应改为head.length() - 11)
Java code/*** 得到行头
*
*@paramk
* 当前行数
*@return*/privateString getLineHead(intk) {
String head="000000";
head+=Integer.toHexString(k)+"0h:";if(head.length()>11)returnhead.substring(head.length()-11, head.length());elsereturnhead;
}

热点排行