Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP base_在Java中的转换_Java_Php - Fatal编程技术网

PHP base_在Java中的转换

PHP base_在Java中的转换,java,php,Java,Php,在Java中,有没有一种与PHP的base\u convert函数兼容的方法可以在基之间进行转换?我一直在玩弄布尔数组,但这似乎是解决这个问题的一个非常复杂的解决方案。经过一番修改和@BoristheSpider的建议,这个答案似乎是正确的,包括与PHP中的32位整数相关的溢出问题。 /** *将字符串从一个基转换为另一个基。基础必须介于两者之间 *2和36,包括在内。此功能显示与原始功能相同的问题 *与32位整数溢出相关的PHP版本。 * *@param inputValue数字的字符串表

在Java中,有没有一种与PHP的
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”,因此行为类似,但不完全相同。