KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jeantessier > classreader > BitFormat


1 /*
2  * Copyright (c) 2001-2005, Jean Tessier
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Jean Tessier nor the names of his contributors
17  * may be used to endorse or promote products derived from this software
18  * without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */

32
33 package com.jeantessier.classreader;
34
35 public class BitFormat {
36     public static final int DEFAULT_MAX_LENGTH = 32;
37     public static final int DEFAULT_GROUP_SIZE = 8;
38     public static final char DEFAULT_GROUP_SEPARATOR = ' ';
39
40     private int maxLength;
41     private int groupSize;
42     private char groupSeparator;
43     
44     public BitFormat() {
45         this(DEFAULT_MAX_LENGTH, DEFAULT_GROUP_SIZE, DEFAULT_GROUP_SEPARATOR);
46     }
47
48     public BitFormat(int maxLength) {
49         this(maxLength, DEFAULT_GROUP_SIZE, DEFAULT_GROUP_SEPARATOR);
50     }
51
52     public BitFormat(int maxLength, int groupSize) {
53         this(maxLength, groupSize, DEFAULT_GROUP_SEPARATOR);
54     }
55     
56     public BitFormat(int maxLength, int groupSize, char groupSeparator) {
57         this.maxLength = maxLength;
58         this.groupSize = groupSize;
59         this.groupSeparator = groupSeparator;
60     }
61
62     public String JavaDoc format(int n) {
63         return format(Integer.toBinaryString(n).toCharArray());
64     }
65     
66     public String JavaDoc format(long n) {
67         return format(Long.toBinaryString(n).toCharArray());
68     }
69
70     private String JavaDoc format(char[] binaryString) {
71         StringBuffer JavaDoc result = new StringBuffer JavaDoc();
72
73         for (int i=0; i<maxLength; i++) {
74             if (((maxLength - i) % groupSize == 0) && i > 0) {
75                 result.append(groupSeparator);
76             }
77
78             if (i < maxLength - binaryString.length) {
79                 result.append('0');
80             } else {
81                 result.append(binaryString[binaryString.length - maxLength + i]);
82             }
83         }
84         
85         return result.toString();
86     }
87 }
88
Popular Tags