C语言的strtoul,stratal方法的java实现
2016-07-20 23:02
525 查看
package com.strtol; import java.util.Arrays; /** * 类 名:StringUtil * 类 描 述: * 作 者:Fabuler * 日 期:2016年7月20日-下午9:31:17 */ public class StringUtil { /** * 描述:此方法只返回非负数 * 作者:Fabuler * 日期:2016年7月20日 - 下午10:35:28 * @param cp * @param base * @return */ private static long strtoul(char[] cp,int base){ long result=0,value; int i=0; if(base==0){ base=10; if(cp[i]=='0'){ base=8; i++; if(Character.toLowerCase(cp[i])=='x'&&isxdigit(cp[1])){ i++; base=16; } } }else if(base==16){ if(cp[0]=='0'&&Character.toLowerCase(cp[1])=='x') i+=2; } while(isxdigit(cp[i])&&(value = isdigit(cp[i]) ? cp[i]-'0' : Character.toLowerCase(cp[i])-'a'+10) < base){ result=result*base+value; i++; } return result; } /** * 描述:此会返回有符号数 * 作者:Fabuler * 日期:2016年7月20日 - 下午10:36:08 * @param cp * @param base * @return */ private static long strtol(char[]cp,int base){ if(cp[0]=='-'){ return -strtoul(subChars(cp, 1),base); } return strtoul(cp, base); } private static boolean isxdigit(char c){ return ('0' <= c && c <= '9')||('a' <= c && c <= 'f')||('A' <= c && c <= 'F'); } private static boolean isdigit(char c){ return '0' <= c && c <= '9'; } /** * 描述:char数组切分 * 作者:Fabuler * 日期:2016年7月20日 - 下午10:37:59 * @param cp * @param indexs * @return */ private static char[] subChars(char[]cp,int...indexs){ if(indexs.length==1){ return Arrays.copyOfRange(cp, indexs[0], cp.length); }else if(indexs.length>1){ return Arrays.copyOfRange(cp, indexs[0], indexs[0]+indexs[1]); } return cp; } public static long strtol(String str,int base){ return strtol((str+"\0").toCharArray(),base); } public static long strtoul(String str,int base){ return strtoul((str+"\0").toCharArray(),base); } public static void main(String[] args) { String md5="0ca175b9c0f726a831d895e269332461"; // System.out.println(strtol(subChars(md5.toCharArray(),0,4), 16)); // System.out.println(strtol(subChars(md5.toCharArray(),3,4), 16)); System.out.println(strtol(md5.substring(0, 4),16)); System.out.println(strtol(md5.substring(3, 3+4),16)); } }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言二进制思想以及数据的存储
- C语言中计算正弦的相关函数总结