相关疑难解决方法(0)

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

我必须在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)

我陷入了这个问题.

java

228
推荐指数
11
解决办法
55万
查看次数

如何在JSON中接收字节数组

我试图从服务器接收一个将包装在JSON中的pdf.

如果我只是将pdf的字节数组发送到前端,我可以通过设置responseType来正确读取它arraybuffer,然后我可以通过以下方式下载pdf:

var blob = new Blob([data], { type: application/pdf});
    if ($window.navigator && $window.navigator.msSaveOrOpenBlob) {
        $window.navigator.msSaveOrOpenBlob(blob);
    } else {
        var a = document.createElement("a");
        document.body.appendChild(a);
        var fileURL = URL.createObjectURL(blob);
        a.href = fileURL;
        a.download = fileName;
        a.click();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当服务器尝试发送带有bytearray的JSON时,如果我设置为responseTypeto JSON,那么我将无法转换blob.但是,如果我设置responseTypearrayBuffer,我将获得一个arrayBuffer数组,如何将其转换为JSON,同时仍然能够提取pdf:

我收到的JSON格式如下:

{
  result: true,
  value: <the pdf byte array>,
  errorMessage: null
}
Run Code Online (Sandbox Code Playgroud)

javascript json arraybuffer angularjs

7
推荐指数
2
解决办法
1030
查看次数

Java - 将字节数组存储为DB中的String,并使用String值创建字节数组

我有一个字节数组,其值[B@6c89db9a已经将此值存储在MySQL数据库中作为字符串表示 -mybyteArray.toString()

我想从数据库中检索保存的值,并使用原始字节数组的字符串值创建一个新的字节数组.

我已经尝试了Java Byte Array到String By By By Array的示例

字节到字符串,反之亦然

但是我没有得到原始的字节数组值.它产生了不同的价值.任何人都可以建议吗?

java mysql bytearray

2
推荐指数
1
解决办法
3万
查看次数

字节数组长度在变换前后变化

我需要通过Internet发送和接收大字节数组(http restful service).

我能想到的最简单的方法是将字节数组转换为字符串.

我搜索了一下,发现这个帖子Java Byte Array to String to Byte Array

我有以下代码来验证转换的准确性.

    System.out.println("message");
    System.out.println (message);

    String message = "Die Strahlengriffelgewächse stammen...";

    byte[] pack = Fbs.packExce(message);    
    System.out.println ("pack");
    System.out.println (pack);
    System.out.println ("packlenght:" + pack.length);

    String toString = new String(pack);
    System.out.println ("toString");
    System.out.println (toString);

    byte[] toBytes = toString.getBytes();
    System.out.println ("toBytes");
    System.out.println (toBytes);
    System.out.println ("toByteslength:" +toBytes.length);
Run Code Online (Sandbox Code Playgroud)

"Fbs.packExce()"是一种获取大块字符串并生成大字节数组的方法.

我改变了消息的长度,检查并打印出字节数组的长度,然后转换为字符串并转换回来.

我得到了以下结果:

...
pack
[B@5680a178
packlenght:748
...
toBytes
[B@5fdef03a
toByteslength:750

----------------------

...
pack
[B@5680a178
packlenght:1016
...
toBytes
[B@5fdef03a
toByteslength:1018
Run Code Online (Sandbox Code Playgroud)

我省略了"消息",因为它太长了.

10次​​中的8次,我可以看到派生的字节数组(新的,称"toBytes")比原始字节数组("pack")长2个字节

我说过10个中的8个,因为在派生和原始之间的长度相同的情况下也会出现,见下文 …

java arrays string bytearray data-conversion

2
推荐指数
1
解决办法
201
查看次数