我必须在Android中将字节数组转换为字符串,但我的字节数组包含负值.
如果我再次将该字符串转换为字节数组,我得到的值与原始字节数组值不同.
我该怎么做才能获得正确的转换?我用来进行转换的代码如下:
// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);
// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++)
System.out.println("by1["+i+"] >> "+str1);
Run Code Online (Sandbox Code Playgroud)
我陷入了这个问题.
我试图使用SHA-256哈希我的用户密码字符串类型
我使用SHA-256使用以下方法散列字符串
String text = "abc";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
要将btye数组转换为字符串,我使用以下方法
String doc2 = new String(hash, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
当我打印doc2输出时,我得到了垃圾
?x????AA@?]?"#?a??z???a?
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ???如何使用SHA-256散列字符串并将其转换回字符串?