A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class StrBinaryTurn {
  2. //将Unicode字符串转换成bool型数组
  3. public boolean[] StrToBool(String input){
  4. boolean[] output=Binstr16ToBool(BinstrToBinstr16(StrToBinstr(input)));
  5. return output;
  6. }
  7. //将bool型数组转换成Unicode字符串
  8. public String BoolToStr(boolean[] input){
  9. String output=BinstrToStr(Binstr16ToBinstr(BoolToBinstr16(input)));
  10. return output;
  11. }
  12. //将字符串转换成二进制字符串,以空格相隔
  13. private String StrToBinstr(String str) {
  14. char[] strChar=str.toCharArray();
  15. String result="";
  16. for(int i=0;i<strChar.length;i++){
  17. result +=Integer.toBinaryString(strChar[i])+ " ";
  18. }
  19. return result;
  20. }
  21. //将二进制字符串转换成Unicode字符串
  22. private String BinstrToStr(String binStr) {
  23. String[] tempStr=StrToStrArray(binStr);
  24. char[] tempChar=new char[tempStr.length];
  25. for(int i=0;i<tempStr.length;i++) {
  26. tempChar[i]=BinstrToChar(tempStr[i]);
  27. }
  28. return String.valueOf(tempChar);
  29. }
  30. //将二进制字符串格式化成全16位带空格的Binstr
  31. private String BinstrToBinstr16(String input){
  32. StringBuffer output=new StringBuffer();
  33. String[] tempStr=StrToStrArray(input);
  34. for(int i=0;i<tempStr.length;i++){
  35. for(int j=16-tempStr[i].length();j>0;j--)
  36. output.append('0');
  37. output.append(tempStr[i]+" ");
  38. }
  39. return output.toString();
  40. }
  41. //将全16位带空格的Binstr转化成去0前缀的带空格Binstr
  42. private String Binstr16ToBinstr(String input){
  43. StringBuffer output=new StringBuffer();
  44. String[] tempStr=StrToStrArray(input);
  45. for(int i=0;i<tempStr.length;i++){
  46. for(int j=0;j<16;j++){
  47. if(tempStr[i].charAt(j)=='1'){
  48. output.append(tempStr[i].substring(j)+" ");
  49. break;
  50. }
  51. if(j==15&&tempStr[i].charAt(j)=='0')
  52. output.append("0"+" ");
  53. }
  54. }
  55. return output.toString();
  56. }
  57. //二进制字串转化为boolean型数组 输入16位有空格的Binstr
  58. private boolean[] Binstr16ToBool(String input){
  59. String[] tempStr=StrToStrArray(input);
  60. boolean[] output=new boolean[tempStr.length*16];
  61. for(int i=0,j=0;i<input.length();i++,j++)
  62. if(input.charAt(i)=='1')
  63. output[j]=true;
  64. else if(input.charAt(i)=='0')
  65. output[j]=false;
  66. else
  67. j--;
  68. return output;
  69. }
  70. //boolean型数组转化为二进制字串 返回带0前缀16位有空格的Binstr
  71. private String BoolToBinstr16(boolean[] input){
  72. StringBuffer output=new StringBuffer();
  73. for(int i=0;i<input.length;i++){
  74. if(input[i])
  75. output.append('1');
  76. else
  77. output.append('0');
  78. if((i+1)%16==0)
  79. output.append(' ');
  80. }
  81. output.append(' ');
  82. return output.toString();
  83. }
  84. //将二进制字符串转换为char
  85. private char BinstrToChar(String binStr){
  86. int[] temp=BinstrToIntArray(binStr);
  87. int sum=0;
  88. for(int i=0; i<temp.length;i++){
  89. sum +=temp[temp.length-1-i]<<i;
  90. }
  91. return (char)sum;
  92. }
  93. //将初始二进制字符串转换成字符串数组,以空格相隔
  94. private String[] StrToStrArray(String str) {
  95. return str.split(" ");
  96. }
  97. //将二进制字符串转换成int数组
  98. private int[] BinstrToIntArray(String binStr) {
  99. char[] temp=binStr.toCharArray();
  100. int[] result=new int[temp.length];
  101. for(int i=0;i<temp.length;i++) {
  102. result[i]=temp[i]-48;
  103. }
  104. return result;
  105. }



  106. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马