NPE Fix |
||
![]() Cpt SAJChurchey public static String string2Bin(String str){
if(str == null || str.trim().length() == 0)
//Matches NULL and whitespace case
return "";
str = str.trim(); //Gets rid of leading/trailing whitespace
int strlen = str.length();
StringBuffer binaryString = new StringBuffer((strlen * 9));
/*
Assuming all UTF-8 input. The capacity of the buffer
needs to be strlen * 9. This cuts down on what can
be a time consuming dynamic resizing on large input
sets. Should only resize once at most, and only if
the input contains a UTF-16 character.
*/
for(int i=0;i < strlen;++i){ //Iterates through string
int decimal = str.charAt(i); //Gets "ASCII value"
String binary = Integer.toBinaryString(decimal);
if(decimal <= 255){
/*
This case tests for ASCII, Extended ASCII and UTF-8
integer values. It completes the octet for these
8-bit encodings by padding with leading zeros.
*/
int trailingZeros = 8 - binary.length();
for(int j = 0; j < trailingZeros;++j)
binaryString.append("0");
}//end if
else{ //UTF-16
/*
This case completes the 16-bit encoding of UTF-16
characters by padding with leading zeros
*/
int trailingZeros = 16 - binary.length();
for(int k = 0;k < trailingZeros;++k)
binaryString.append("0");
}//end else
binaryString.append(binary);
//Adds binary representation to generated leading zeros.
binaryString.append(" ");
}//end for
return binaryString.toString();
}//end string2Bin()
Cpt SAJChurchey
C/O of Editorial OSI Staff edit0r OSI Feedback Representative Replies:
|
||
| CyberArmy::Forum v0.6 Generated In 0.02404 seconds |