[JVM] - 继10进制的java.lang.Object查看之后
cmd清除命令:cls

之后查阅了其它博客,发现这位大神同样也在做JVM,并且我很希望用它的10进制转16进制类来测试一下该解析的10进制是否对应着Object的16进制呢?
这位大神的10进制转16进制代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader; public class Test {
public static String txt2String(File file){
StringBuilder result = new StringBuilder();
try{
BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
String s = null;
while((s = br.readLine())!=null){//使用readLine方法,一次读一行
result.append(System.lineSeparator()+s);
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
return result.toString();
}
public static int hixTo(StringBuffer sb){
int sum=0;
if(sb.charAt(0)>=48&&sb.charAt(0)<=57){
sum+=(sb.charAt(0)-48)*16;
}else{
sum+=((sb.charAt(0)-96)+9)*16;
}
if(sb.charAt(1)>=48&&sb.charAt(1)<=57){
sum+=(sb.charAt(1)-48);
}else{
sum+=((sb.charAt(1)-96)+9);
}
return sum;
}
public static void main(String[] arts){
File file = new File("D:\\yff.txt");
String str=txt2String(file);
StringBuffer sbBefore=new StringBuffer(str);
StringBuffer sbAfter=new StringBuffer();
for(int i=0;i<sbBefore.length();i++){
if((sbBefore.charAt(i)>=48&&sbBefore.charAt(i)<=57)||(sbBefore.charAt(i)>=97&&sbBefore.charAt(i)<=122)){
//System.out.print(sbBefore.charAt(i));
sbAfter.append(sbBefore.charAt(i));
}
}
System.out.println(sbAfter);
System.out.println();
for(int i=0;i<sbAfter.length();i=i+2){
System.out.print(hixTo(new StringBuffer(""+sbAfter.charAt(i)+sbAfter.charAt(i+1)))+" ");
if(i!=0&&i%100==0)
System.out.println();
}
}
}
这样精湛的代码着实让人敬佩,我翻看了下之前我写的一些类似算法的解析:
import java.util.ArrayList;
public class Fracts { public static String convertFrac(long[][] lst) {
long bigFrac = 1;
long result = 1;
// int count = 0;//计算是否还可以
int fracNum = 0;//原始分母数量
int maxDLen = 0;
ArrayList<long[]> divisor = new ArrayList();
ArrayList<Long> members = new ArrayList<Long>();
ArrayList<Long> fracs = new ArrayList<Long>();
// lst是个long型的二维数组,里面的每组元素是分子和分母的组合形式
// 获取其分母的公共分母,(分子也按需更改),返回三组数据的字符串形式
for (int i = 0; i < lst.length; i++) {
for (int j = 0; j < 2; j++) {
if(j==1) { //开始获取分母
//从上面if 开始进来了 所有的分母 多个数的最小公倍数求法:
//是素数的保持素数,不是素数的分解
long[] fracArray = new long[1];
long[] fracArray2 = new long[1];
int q;
int lastIndex = 0;
//分解质因数
long frac = lst[i][j];//获取了每个二维数组的元素
fracs.add(frac);
int count = 0; //[计数]看看这个数有共几个质因数
for(q=2;q<frac;q++) { if(frac%q==0) {
//如果一个数能分解,就必定还有另一个因数,所以数组大小必须大于长度1
// System.out.println("q:"+q);
//得到了这个质因数的值(多个,需要数组存放)
//如果对每个数值的质因数,生成不同的数组或集合存放呢?
count++;//有一个因数分解时,count就递增 // System.out.println(""+fracArray.length+":"+count);
if(fracArray.length<=count) {
fracArray = new long[count+1];//变更数组大小
lastIndex=count;
for(int h=0;h<fracArray2.length;h++) {
fracArray[h] = fracArray2[h];
}
} fracArray[count-1] = q; //将质因数添加到数组
// System.out.println("q:"+q);
fracArray2 = fracArray;
frac = frac/q;
// System.out.println("frac:"+frac);
q=q/q; // } }
//将最后的因数装入数组最后
fracArray2[lastIndex] =q;
if(count==0) {
//这是个素数
fracArray2[0]=frac;
} divisor.add(fracArray2);
if(fracArray2.length>maxDLen) {
maxDLen = fracArray2.length;
} }
if(j==0) {
long mem = lst[i][j];
members.add(mem);
} } }
long[][] resultMatrixArr = new long[lst.length][maxDLen];
long[][] resultMatrixArr2 = new long[maxDLen][lst.length];
//将多个分母的分解的质因数装入二维数组,以最长质因数数组长度为二维矩阵宽度.原lst.length为高度.
for(int l=0;l<lst.length;l++) {
for(int p=0;p<divisor.get(l).length;p++) {
resultMatrixArr[l][p]=divisor.get(l)[p];
}
} for(int aa=0;aa<lst.length;aa++) {//矩阵高
// System.out.println(resultMatrixArr[aa]);
int grow = 0;
for(int cc=0;cc<maxDLen;cc++) {//矩阵宽
//获取每行的unique的集合,去除每行存在的重复数字,保留唯一一个.
long[] rowNum = resultMatrixArr[aa]; //0,0; 0,1; 0,2
grow=cc;
while((grow+1)<rowNum.length) {//如果cc+1不是最大数组下标 则+1
grow++;
if(rowNum[cc]==rowNum[grow]) {
resultMatrixArr[aa][grow]=0;
}
}
//将二维数组倒置装入另一个
resultMatrixArr2[cc][aa] = resultMatrixArr[aa][cc];
}
} //竖向去除[JVM] - 继10进制的java.lang.Object查看之后的更多相关文章
- java中 8进制 10进制 2进制 16进制 相互转换
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...
- java中16进制转换10进制
java中16进制转换10进制 public static void main(String[] args) { String str = "04e1"; String myStr ...
- 16进制转10进制 HDU-1720
A+B Coming Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- P1604_B进制星球(JAVA语言)
思路:BigInteger 五杀!利用BigInteger自带的进制转换. //第一次提交WA了几组数据,下载测试数据发现带字母的答案要转换为大写. 题目背景 进制题目,而且还是个计算器~~ 题目描述 ...
- 【九度OJ】题目1208:10进制 VS 2进制 解题报告
[九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...
- 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制
16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...
- [转]as3 算法实例【输出1 到最大的N 位数 题目:输入数字n,按顺序输出从1 最大的n 位10 进制数。比如输入3,则输出1、2、3 一直到最大的3 位数即999。】
思路:如果我们在数字前面补0的话,就会发现n位所有10进制数其实就是n个从0到9的全排列.也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的10进制数. /** *ch 存放数字 *n n ...
- C++ 中 int 转string, 以及10进制转2进制
感谢:http://blog.csdn.net/xiaofei2010/article/details/7434737 以及:http://www.cnblogs.com/nzbbody/p/3504 ...
- js用8421码实现10进制转2进制
今天早上突然心血来潮决定用 ''和js来撸一个进制转换.(纯属心血来潮,有兴趣的可以看看.) 我们知道,通过8421码.可以快速的得到一个10进制的2进制.如下图: 如上图所示:我们将10进制的 '1 ...
随机推荐
- php页面获取数据库中的数据
<!DOCTYPE HTML><html> <head> <meta charset="utf-8" /> ...
- SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
转自:http://www.cnblogs.com/CareySon/archive/2012/02/23/2365006.html SQL Server中灾难时备份结尾日志(Tail of log) ...
- JS的二维数组
今天,记录一下JS的二位数组,并附上例题. 一.二维数组的本质:数组中的元素又是数组. 其实,我们都见过这样的二维数组,只不过没在意罢了,例如: var arr = [[1,2,4,6],[2,4,7 ...
- [LeetCode] 844. Backspace String Compare_Easy tag: Stack **Two pointers
Given two strings S and T, return if they are equal when both are typed into empty text editors. # m ...
- ubuntu vim python配置
参考https://www.cnblogs.com/cjy15639731813/p/5886158.html 但是后面打开文件的时候会报错,参考https://blog.csdn.net/jeff_ ...
- JVM内存模型:程序计数器
一.JVM模型概述 java虚拟机(JVM)在java程序运行的过程中,会将它所管理的内存划分为若干个不同的数据区域,这些区域有的随着JVM的启动而创建,有的随着用户线程的启动和结束而建立和销毁.一个 ...
- 奋斗史-IT女生是怎样炼成的
IT女生的奋斗史 终于来到了毕业季,感觉有点伤感! 记得11年来到大学的时候,还是那么懵懂,什么都不懂,几乎连电脑的基本操作都不会!自己小时候虽然家里穷,但是从小就觉得“软件”是个很神奇的东西,很了不 ...
- ios 透过上层视图点击相应下方视图的点击事件
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ UIView *hitView = [super hitTest:point ...
- Java面向对象---接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口 ...
- OAuth : open Authorization 开发授权
OAuth : open Authorization 开发授权 用户访问慕课网,慕课网请求OAuth登陆页面,用户输入QQ号码和密码,这个页面的域名不属于慕课网是属于QQ的,随后把结果给慕课网,这个结 ...