【问题标题】:What is the NodeJs equivalent to Java getBytes()什么是 NodeJs 等价于 Java getBytes()
【发布时间】:2015-11-22 16:34:03
【问题描述】:

我需要在 NodeJs 中执行 Java 函数。

string.getBytes()

在 Java 中,这会将字符串转换为字节数组 byte[]

【问题讨论】:

  • 也许 iconv 模块可以提供帮助?你需要什么编码?基于 Unicode 的事情可能并不太难(你可以使用 string.codePointAt() 获取代码点)?
  • 由于许多精通 Javascript/nodejs 的开发人员可能不了解 Java,也许您可​​以描述一下 getBytes() 所做的事情,这样我们中的更多人可能知道哪些 nodejs 功能可以替代。
  • @jfriend00 在 Java 中,这会将字符串转换为字节数组 byte[]。

标签: javascript java node.js


【解决方案1】:

你也可以试试

Class Method: Buffer.byteLength(string[, encoding])#
  • 字符串字符串
  • 编码字符串,可选,默认:'utf8'
  • 返回:数字

    Buffer.byteLength(str, 'utf8')
    

【讨论】:

    【解决方案2】:

    这应该会有所帮助:

    > s = 'あhello'
    'あhello'
    > s.split('').forEach(function(c,i) { console.log(s.charCodeAt(i) + " " + c); });
    12354 あ
    104 h
    101 e
    108 l
    108 l
    111 o
    undefined
    
    // Or as one line
    s.split('').map(function(c,i) { return s.charCodeAt(i) }).reduce(function(a, b) {return a.toString(16) + " " + b.toString(16)})
    

    【讨论】:

    • a = []; s.split('').map(function(c,i) { a.push(s.charCodeAt(i)) }); a // 可能有更多帮助
    • 不过,这并不是一个真正的字节数组。它是一个整数数组(如您所示,其值大于 255)。
    【解决方案3】:

    @Eranga Kapukotuwa 我不知道你是否还需要这个问题的答案,但我已经使用下面的代码在我的一个项目中完成了这项工作,并且效果很好。

    var getBytes = function (string) {
    var utf8 = unescape(encodeURIComponent(string));
    var arr = [];
    
    for (var i = 0; i < utf8.length; i++) {
        arr.push(utf8.charCodeAt(i));
    }
    
    console.log('Array ', arr);
    
    return arr;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多