Java 从Android将EWS中的UID字符串转换为十六进制数组和base64字符串ItemId

Java 从Android将EWS中的UID字符串转换为十六进制数组和base64字符串ItemId,java,android,hex,base64,Java,Android,Hex,Base64,从这个示例()中,我可以从UID获取ID字符串。但问题是我是用安卓系统写的,而不是C。所以在Java中,我需要同样的方法将字符串转换为十六进制数组和base 64字符串。我怎样才能得到它 private static string GetObjectIdStringFromUid( string id ) { var buffer = new byte[ id.Length / 2 ]; for ( int i = 0; i < id.Length / 2;

从这个示例()中,我可以从UID获取ID字符串。但问题是我是用安卓系统写的,而不是C。所以在Java中,我需要同样的方法将字符串转换为十六进制数组和base 64字符串。我怎样才能得到它

  private static string GetObjectIdStringFromUid( string id )
  {
      var buffer = new byte[ id.Length / 2 ];
      for ( int i = 0; i < id.Length / 2; i++ )
      {
        var hexValue = byte.Parse( id.Substring( i * 2, 2 ), System.Globalization.NumberStyles.AllowHexSpecifier );
        buffer[ i ] = hexValue;
      }
      return Convert.ToBase64String( buffer );
  }
私有静态字符串GetObjectdStringFromUID(字符串id)
{
var buffer=新字节[id.长度/2];
对于(int i=0;i
输入示例:

00000000 F1985146856BD941BA234376A64673F0700855A223A9715B6468B4D00795E77CAAB0000033E03A0000055A223A9715B6468B4D00795E77CAAB000034860B0000

输出:

AAAA PGYUUAFA9LBUIND2PKZZ8HAIVAIJQXFBZGI00AEV53YQSAAZ4OAIVAIJQXFBZGI00AEV53YQSAA0HGSAAA==


如果我理解正确,您正在寻找一种在Java中将十六进制字符串转换为Base64字符串的方法

使用库可以轻松完成此操作:


不使用Java中的外部库 我使用了page的源代码并将其转换为java 下面是我的代码

public static String decodeHexToBase64(String hexString){
    if(hexString.length() %2 !=0){
        return null;
    }else{
    int[] binary = new int[hexString.length()/2];
      for (int i=0; i<hexString.length()/2; i++) {
        String h = hexString.substring(i*2, (i*2)+2);
        binary[i] = Integer.parseInt(h,16);        
      }

    return convertToBase64(binary);
    }
}


public static String convertToBase64(int[] input){
    String base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    String ret = "";
      int i = 0;
      int j = 0;
      int[] char_array_3 = new int[3];
      int[] char_array_4 = new int[4];
      int in_len = input.length;
      int pos = 0;

      while (in_len-- > 0)
      {
          char_array_3[i++] = input[pos++];
          if (i == 3)
          {
              char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
              char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
              char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
              char_array_4[3] = char_array_3[2] & 0x3f;

              for (i = 0; (i <4) ; i++)
                  ret += base64_chars.charAt(char_array_4[i]);
              i = 0;
          }
      }

      if (i > 0)
      {
          for (j = i; j < 3; j++)
              char_array_3[j] = 0;

          char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
          char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
          char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
          char_array_4[3] = char_array_3[2] & 0x3f;

          for (j = 0; (j < i + 1); j++)
              ret += base64_chars.charAt(char_array_4[j]);

          while ((i++ < 3))
              ret += '=';

      }

      return ret;



}
公共静态字符串decodeHexToBase64(字符串hexString){
if(hexString.length()%2!=0){
返回null;
}否则{
int[]binary=new int[hexString.length()/2];
对于(int i=0;i 0)
{
字符数组_3[i++]=输入[pos++];
如果(i==3)
{
char_数组_4[0]=(char_数组_3[0]&0xfc)>>2;
char_数组_4[1]=((char_数组_3[0]&0x03)>4);
char_数组_4[2]=((char_数组_3[1]&0x0f)>6);
char_数组_4[3]=char_数组_3[2]&0x3f;
对于(i=0;(i 0)
{
对于(j=i;j<3;j++)
字符数组_3[j]=0;
char_数组_4[0]=(char_数组_3[0]&0xfc)>>2;
char_数组_4[1]=((char_数组_3[0]&0x03)>4);
char_数组_4[2]=((char_数组_3[1]&0x0f)>6);
char_数组_4[3]=char_数组_3[2]&0x3f;
对于(j=0;(j
public static String decodeHexToBase64(String hexString){
    if(hexString.length() %2 !=0){
        return null;
    }else{
    int[] binary = new int[hexString.length()/2];
      for (int i=0; i<hexString.length()/2; i++) {
        String h = hexString.substring(i*2, (i*2)+2);
        binary[i] = Integer.parseInt(h,16);        
      }

    return convertToBase64(binary);
    }
}


public static String convertToBase64(int[] input){
    String base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    String ret = "";
      int i = 0;
      int j = 0;
      int[] char_array_3 = new int[3];
      int[] char_array_4 = new int[4];
      int in_len = input.length;
      int pos = 0;

      while (in_len-- > 0)
      {
          char_array_3[i++] = input[pos++];
          if (i == 3)
          {
              char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
              char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
              char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
              char_array_4[3] = char_array_3[2] & 0x3f;

              for (i = 0; (i <4) ; i++)
                  ret += base64_chars.charAt(char_array_4[i]);
              i = 0;
          }
      }

      if (i > 0)
      {
          for (j = i; j < 3; j++)
              char_array_3[j] = 0;

          char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
          char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
          char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
          char_array_4[3] = char_array_3[2] & 0x3f;

          for (j = 0; (j < i + 1); j++)
              ret += base64_chars.charAt(char_array_4[j]);

          while ((i++ < 3))
              ret += '=';

      }

      return ret;



}