将十六进制字符串转换为字节数组

瑞奇

我的问题是:
如何成功使用getResourceByHash(...)Evernote API的方法

我所做的:
我在笔记内容中得到了em-media的十六进制哈希值:80ad525cd14de8f925487c02afc9ab21

然后,我使用以下函数将十六进制转换String为字节:

function hex2bin(hex){
    var bytes = [];
    for(var i=0; i< hex.length-1; i+=2) {
        bytes.push(parseInt(hex.substr(i, 2), 16));
    }
    return String.fromCharCode.apply(String, bytes);    
}

var bin = hex2bin("80ad525cd14de8f925487c02afc9ab21");

接下来,我getResourceByHash(...)以这种方式将变量应用于函数

noteStore.getResourceByHash(GUID, bin, true, true, true, 
    function(err,result){
        console.log(err);
        console.log(result);
    }
);

但是输出结果是:

{identifier: 'Resources', key: 'c280c2ad525cc3914dc3a8c3b925487c02c2afc389c2ab21'}
undefined

总之,我很困惑。

马文·埃米尔·布拉奇(Marvin Emil Brach)

此外,您不能简单地将类型的值推入Integer字节数组。整数用32位(4个字节)表示,因此您首先必须“拆分”这样的数字,同时一一计算单个字节:

intToByteArray = function(intToConvert) {
    var byteArray = new Array(4)

    for(var i = 0; i < byteArray.length; i++) {
        var byte = intToConvert & 0xff;
        byteArray[i] = byte;
        intToConvert = (intToConvert - byte) / 256 ;
    }

    return byteArray;
};     

来回转换的演示(JS-Fiddle)


代码行说明

  1. 首先,我们声明一个字节数组:

    var byteArray = new Array(4)
    

    数组:[00000000,00000000,00000000,00000000]

  2. 通过使用按AND运算符&,我们在将结果值分配给新变量的同时“捕获”了前8位:

    var byte = intToConvert & 0xff;
    

    我们的变量发生了什么:

    intToConvert:10101010 10101010 10101010 10101010
    和“ 0xff”:11111111 -------- -------- --------
    结果:10101010
  3. 然后,我们将得到的单个字节放入临时字节数组的实际索引中:

    byteArray[i] = byte;
    

    数组:[10101010,00000000,00000000,00000000]

  4. 现在,我们只需要减去刚添加到数组中的值,然后从整数变量中删除一个字节即可:

    intToConvert = (intToConvert - byte) / 256 ;
    

    2863311530-170 = 2863311360
    2863311360/256 = 11184810

    2863311360 => 10101010 10101010 10101010 00000000 
      11184810 => 10101010 10101010 10101010
    

继续此循环会将字节从Integer逐字节传输到临时字节数组。因此,我们将获得一个由4个单字节组成的字节数组,这些字节数组表示一个整数或两个Character十六进制String


如何转换byteInteger 这里已经很好地解释了
因此,您的更新hex2bin(String)应如下所示:

function hex2bin(hexString) {
    var bytes = new Array(hexString.length / 2);

    for(var i = 0; i < hexString.length-1; i+=2) {
        bytes.push(
            intToByteArray(
                parseInt(hexString.substr(i, 2), 16)
            )
        );
    }

    StringBuilder sb = new StringBuilder(bytes.length * 8);
    for(byte b : bytes) {
        sb.append(Integer.toBinaryString((b & 0xFF) + 0x100).substring(1));    
    }
    return sb.toString();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将十六进制字符串转换为字节数组

来自分类Dev

将ASCII十六进制字符串转换为字节数组

来自分类Dev

将十六进制字符串转换为字节数组

来自分类Dev

将字符串转换为十六进制,然后转换为字节数组

来自分类Dev

Java通用将字节数组转换为字符串(非十六进制,十进制)

来自分类Dev

Java通用将字节数组转换为字符串(非十六进制,十进制)

来自分类Dev

十六进制字符串转换为字节数组

来自分类Dev

在 C# 中将十六进制字符串转换为字节数组

来自分类Dev

是否有将字节数组转换为十六进制字符串的本地方法?

来自分类Dev

将纯文本字符串转换为十六进制样式的字节数组?

来自分类Dev

将纯文本字符串转换为十六进制样式的字节数组?

来自分类Dev

使用 VB.NET 2015 将长十六进制字符串转换为十六进制字节数组

来自分类Dev

字节数组到javascript中的十六进制字符串转换

来自分类Dev

如何在C#中将十进制字符串值转换为十六进制字节数组?

来自分类Dev

Python将字节数组转换为十六进制数组

来自分类Dev

将十六进制字符串转换为字节[]

来自分类Dev

将十六进制字符串转换为字节[]

来自分类Dev

将字节数组转换为十六进制std :: string时空格

来自分类Dev

将字节数组(十六进制)转换为有符号的Int

来自分类Dev

“离开”文本框后,将十六进制字符串格式化为字节数组

来自分类Dev

十六进制字符串到字节数组C#

来自分类Dev

十六进制字符串到字节数组C#

来自分类Dev

将字符串转换为字节数组

来自分类Dev

将二进制字符串转换为字节数组

来自分类Dev

将二进制字符串转换为字节数组

来自分类Dev

Java:将十六进制编码的字符串转换为十六进制字节

来自分类Dev

将十六进制字符串数组转换为十六进制数组

来自分类Dev

使用C#中的BitConverter类将字节数组转换为十六进制值?

来自分类Dev

将字节字符串转换为字节或字节数组

Related 相关文章

  1. 1

    将十六进制字符串转换为字节数组

  2. 2

    将ASCII十六进制字符串转换为字节数组

  3. 3

    将十六进制字符串转换为字节数组

  4. 4

    将字符串转换为十六进制,然后转换为字节数组

  5. 5

    Java通用将字节数组转换为字符串(非十六进制,十进制)

  6. 6

    Java通用将字节数组转换为字符串(非十六进制,十进制)

  7. 7

    十六进制字符串转换为字节数组

  8. 8

    在 C# 中将十六进制字符串转换为字节数组

  9. 9

    是否有将字节数组转换为十六进制字符串的本地方法?

  10. 10

    将纯文本字符串转换为十六进制样式的字节数组?

  11. 11

    将纯文本字符串转换为十六进制样式的字节数组?

  12. 12

    使用 VB.NET 2015 将长十六进制字符串转换为十六进制字节数组

  13. 13

    字节数组到javascript中的十六进制字符串转换

  14. 14

    如何在C#中将十进制字符串值转换为十六进制字节数组?

  15. 15

    Python将字节数组转换为十六进制数组

  16. 16

    将十六进制字符串转换为字节[]

  17. 17

    将十六进制字符串转换为字节[]

  18. 18

    将字节数组转换为十六进制std :: string时空格

  19. 19

    将字节数组(十六进制)转换为有符号的Int

  20. 20

    “离开”文本框后,将十六进制字符串格式化为字节数组

  21. 21

    十六进制字符串到字节数组C#

  22. 22

    十六进制字符串到字节数组C#

  23. 23

    将字符串转换为字节数组

  24. 24

    将二进制字符串转换为字节数组

  25. 25

    将二进制字符串转换为字节数组

  26. 26

    Java:将十六进制编码的字符串转换为十六进制字节

  27. 27

    将十六进制字符串数组转换为十六进制数组

  28. 28

    使用C#中的BitConverter类将字节数组转换为十六进制值?

  29. 29

    将字节字符串转换为字节或字节数组

热门标签

归档