[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 ...
随机推荐
- 01_Python 基础课程安排
Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...
- 鼠标滑动到指定位置时div固定在头部
$(function(){ $(window).scroll(function () { if ($(window).scrollTop() > 253) { ...
- Mirror--如何TSQL查看镜像状态和镜像相关存储过程
--==================================================== --查看镜像状态 SELECT DB_NAME(database_id) AS Datab ...
- Innodb引擎状态查看
我们的MySQL数据库内的表一般都是Innodb表类型的. mysql>show engine innodb status; (低版本用: show innodb status;) === ...
- mysql集群搭建,主主复制
1:mysql搭建远程连接 https://www.cnblogs.com/davidgu/p/3706663.html 2: 两台主机能够相互通信 ,使用ping C:\Users\lenovo&g ...
- 5分钟带你入门vuex(vue状态管理)
如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,那么接下来我们就来学习 ...
- Liferay中request
在liferay中的请求分为renderRequest和actionRequest这两种请求的方式,portletRequest的子类有三个1renderRequest,2EventRequest3C ...
- 【Python】Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
本文转载自:https://www.cnblogs.com/colipso/p/4284510.html 好文 mark http://www.52nlp.cn/python-%E7%BD%91%E9 ...
- IOS中position:fixed吸底时的滑动出现抖动的解决方案
H5方法: //吸顶头部 .header{ width:100%; height:50px; position:fixed; top:0px; } //main滑动区域 .main{ width:10 ...
- vm #set、日期截取、#foreach&#if
<div class="form_row"> <label>状态:</label> #if ($!cp.runState =='t') #set ...