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