Вот что я пытаюсь сделать. У меня есть байт [], который мне нужно сохранить в Redis с ключом (скажем key1). Redis сохранит его как String. Мне нужно восстановить байт [] при получении значения через key1byte [] to String to byte [] снова
//here is a byte array
byte[] bArr = new byte[] {83, 71, 86, 115, 98, 71, 56, 103, 84, 88, 73, 117, 73, 69, 104, 118, 100, 121, 66, 107, 98, 121, 66, 53, 98, 51, 85, 103, 90, 71, 56, 47}; //"Hello World";
// I will have to store this as a byte string into redis
//Base64 encoding
bArr = Base64.encodeBase64(bArr);
String storeStr = Arrays.toString(bArr) ;
// storeStr is what gets stored in redis
System.out.println("storeStr>>" + storeStr+ "<<");
// I will get this string back from redis
// now trying to reconstruct the byte[]
byte[] aArr = Base64.decodeBase64(storeStr);
System.out.println("readStr>>" + Arrays.toString(aArr)+ "<<");
Но я получаю следующий вывод:
storeStr >> [85, 48, 100, 87, 99, 50 , 74, 72, 79, 71, 100, 85, 87, 69, 108, 49, 83, 85, 86, 111, 100, 109, 82, 53, 81, 109, 116, 105, 101, 85 , 73, 49, 89, 106, 78, 86, 90, 49, 112, 72, 79, 67, 56, 61] < < readStr >> [- 13, -98, 60, -41, 77, 60 , -17, -33, 121, -45, -66, 59, -37, -65, 123, -41, 93, 52, -13, -97, 59, -21, -35, 116, -13 , -113, 124, -33, -50, 124, -21, 93, 117, -41, 77, 53, -45, -33, 54, -25, 127, 53, -41, 79, 117, -41, -83, 116, -25, 93, 53 , -13, -98, -9, -29, -33, 61, -41, 78, -69, -13, -50, -67, -45, -113, 117, -41, 110, -10 , -17, -34, -69, -25, -82, -75] < <
Что я делаю неправильно? Есть ли лучшее решение для этого?
Спасибо, он решил проблему. – scs075
Найден правильный метод: String storeStr = Base64.encodeBase64String (bArr); – scs075
Зачем останавливаться на B64? Redis является двоичным, поэтому он может обрабатывать любые непечатаемые символы ASCII. Итак, зачем использовать 64 возможных состояния на символ, если вы можете использовать 256? Используйте 1/4 пространства. –