PHP base_在Java中的转换
在Java中,有没有一种与PHP的PHP base_在Java中的转换,java,php,Java,Php,在Java中,有没有一种与PHP的base\u convert函数兼容的方法可以在基之间进行转换?我一直在玩弄布尔数组,但这似乎是解决这个问题的一个非常复杂的解决方案。经过一番修改和@BoristheSpider的建议,这个答案似乎是正确的,包括与PHP中的32位整数相关的溢出问题。 /** *将字符串从一个基转换为另一个基。基础必须介于两者之间 *2和36,包括在内。此功能显示与原始功能相同的问题 *与32位整数溢出相关的PHP版本。 * *@param inputValue数字的字符串表
base\u convert
函数兼容的方法可以在基之间进行转换?我一直在玩弄布尔数组,但这似乎是解决这个问题的一个非常复杂的解决方案。经过一番修改和@BoristheSpider的建议,这个答案似乎是正确的,包括与PHP中的32位整数相关的溢出问题。
/**
*将字符串从一个基转换为另一个基。基础必须介于两者之间
*2和36,包括在内。此功能显示与原始功能相同的问题
*与32位整数溢出相关的PHP版本。
*
*@param inputValue数字的字符串表示形式。
*@param fromBase介于2和36之间(含2和36)的数字的起始基数。
*@param表示介于2和36(含2和36)之间的数字的结束基数。
*@返回转换为数据库的输入值
。
*@见http://www.php.net/manual/en/function.base-convert.php
*/
公共静态字符串base_convert(最终字符串inputValue、最终整型fromBase、最终整型toBase){
如果(从基部<2 | |从基部>36 | |到基部<2 | |到基部>36){
返回null;
}
字符串ret=null;
试一试{
ret=Integer.toString(Integer.parseInt(inputValue,fromBase),toBase);
}捕获(例外情况除外){};
返回ret;
}
为了获得额外积分,可以轻松包装此函数,以提供PHP的bindec
和decbin
功能:
/**
*将十进制字符串转换为二进制字符串。
*
*@param inputValue十进制数的字符串表示形式。
*@返回输入值的位字符串表示形式
。
*/
公共静态字符串decbin(最终字符串inputValue){
返回Util.base\u convert(inputValue,10,2);
}
/**
*将二进制字符串转换为十进制字符串。
*
*@param inputValue二进制数的字符串表示形式。
*@返回输入值的十进制数字字符串表示形式
。
*/
公共静态字符串bindec(最终字符串输入值){
返回Util.base\u convert(inputValue,2,10);
}
你试过了吗
public static String base_convert(final String inputValue, final int fromBase, final int toBase) {
return new BigInteger(inputValue, fromBase).toString(toBase);
}
对我来说更像是“java方式:)谢谢@jwriteclub
但有时我们需要替换非数字
public static String base_convert(final String inputValue, final int fromBase, final int toBase) {
if (StringUtils.isEmpty(inputValue))
return inputValue;
if (fromBase < 2 || fromBase > 36 || toBase < 2 || toBase > 36) {
return null;
}
String ret = null;
final String numberInputValue = inputValue.replaceAll("\\D", "");
try {
Integer in=Integer.parseInt(numberInputValue, fromBase);
ret = Integer.toString(in, toBase);
} catch (Exception ignored) {
}
return ret;
}
public static String base\u convert(最终字符串输入值、最终整型fromBase、最终整型toBase){
if(StringUtils.isEmpty(inputValue))
返回输入值;
如果(从基部<2 | |从基部>36 | |到基部<2 | |到基部>36){
返回null;
}
字符串ret=null;
最后一个字符串numberInputValue=inputValue.replaceAll(“\\D”和“);
试一试{
整数in=Integer.parseInt(numberInputValue,fromBase);
ret=整数。toString(in,toBase);
}捕获(忽略异常){
}
返回ret;
}
数字基数?整数
上的值如何?还有一个对应的问题。@BoristheSpider这实际上就是答案。但是它没有在php的基本转换中实现“bug”,因此行为类似,但不完全相同。