혼란스러운 제목에 대해 유감이지만 더 나은 것으로 문제를 설명하는 방법을 찾지 못했습니다.문자열에서 긴 배열 및 뒤쪽으로의 변환이 작동하지 않습니다.
문자열을 긴 벡터로 변환하는 프로그램을 작성했습니다. 정보를 되돌릴 수 있어야합니다. 긴 배열로의 변환은 나에게 잘하는 것처럼 보입니다. 베이스 64를 중간 단계로 사용하여 바이트 수를 더 멋지게 만들고 다른 처리 부분을 처리해야합니다.
public long[] str2long(String s)
{
final byte[] authBytes = s.getBytes(StandardCharsets.UTF_8);
final String encoded = Base64.getEncoder().encodeToString(authBytes);
long[] array = new long[encoded.length()];
int i=0;
for(char c: encoded.toCharArray()){
array[i] = (long) c;
// System.out.print(array[i] + " ");
i++;
}
return array;
}
문제는 실제로 그렇지도 힘든 다음 코드는 위의 코드의 정확한 역으로 나타나는지, 그리고 기본 64 다시 변환이 오류를 제공합니다 : Illegal base64 character 5b
.
public String long2str(long[] array)
{
char[] chArray = new char[array.length];
int i=0;
for(long c: array){
chArray[i] = (char) c;
i++;
}
String s = Arrays.toString(chArray);
final byte[] decoded= Base64.getDecoder().decode(s);
try {
s = new String(decoded, "UTF-8");
return s;
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Encryption.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
그래서, 내 질문은 :
내가 놓친 거지 두 번째 방법에서 다른 무엇입니까? 나는 그것이 StandardCharsets.UTF_8
일지도 모른다라고 생각한다. 그러나 나는 확실하지 않다.
어떻게하면이 기능을 long2str(long[] array)
처럼 만들 수 있습니까? long2str(str2long(String s)) == String s
?
원하는 경우이 코드를 확인하기 위해 사용하고있는 테스트 사례를 게시 할 수 있습니다. 당신의 long2str
방법 변경에