首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将字节数组转换为字符串,反之亦然?

如何将字节数组转换为字符串,反之亦然?
EN

Stack Overflow用户
提问于 2009-10-08 15:01:35
回答 19查看 667.8K关注 0票数 293

在Android中,我必须将字节数组转换为字符串,但我的字节数组包含负值。

如果我再次将该字符串转换为字节数组,则得到的值与原始的字节数组值不同。

我可以做些什么来获得正确的转换?我用来进行转换的代码如下:

代码语言:javascript
复制
// 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);

我陷入了这个问题。

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2009-10-08 07:21:37

你的字节数组必须有一些编码。如果您有负值,则编码不能为ASCII。弄清楚这一点后,可以使用以下命令将一组字节转换为字符串:

代码语言:javascript
复制
byte[] bytes = {...}
String str = new String(bytes, StandardCharsets.UTF_8); // for UTF-8 encoding

你可以使用很多编码,看看Oracle javadocs中支持的编码。

票数 452
EN

Stack Overflow用户

发布于 2014-04-09 13:24:50

这对我来说很好:

代码语言:javascript
复制
String cd = "Holding some value";

将字符串转换为byte[]:

代码语言:javascript
复制
byte[] cookie = new sun.misc.BASE64Decoder().decodeBuffer(cd);

将byte[]转换为字符串:

代码语言:javascript
复制
cd = new sun.misc.BASE64Encoder().encode(cookie);
票数 6
EN

Stack Overflow用户

发布于 2015-01-28 11:23:14

代码语言:javascript
复制
private static String toHexadecimal(byte[] digest){
        String hash = "";
    for(byte aux : digest) {
        int b = aux & 0xff;
        if (Integer.toHexString(b).length() == 1) hash += "0";
        hash += Integer.toHexString(b);
    }
    return hash;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1536054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档