从node.js中的字符串转换二进制文件 - 使用哪种编码?

时间:2017-09-08 19:47:49

标签: node.js

我有一个node.js代码,它通过UDP(dgram)接收[command + data]并在AWS中创建一个S3存储桶文件。 问题是,因为命令+数据是用' |'字符,我必须转换为字符串以应用split()并分离命令和数据。然后我将此数据传递给S3Bucket.putObject,这将创建一个包含该数据的文件。数据是二进制的,因此它可能包含非ASCII字符,例如0xE5(dec 224)。

但是当我检查创建的文件时,它包含一个像0xEF 0xBF 0xBD这样的序列替换原始文件,所以我想这是将数据从二进制文件(dgram中的缓冲区)转换为字符串的结果。 我尝试使用Buffer.from('binary')和其他编码将数据转换回缓冲区,但到目前为止我还没有把它弄好......

我该如何解决这个问题?什么是实现这一目标的正确方法?

1 个答案:

答案 0 :(得分:0)

您不必转换为字符串:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

  static String subsequenceAgain(String s, int k) {
    // Complete this function
    char ch[] = new char[s.length()]; //initializing character array
    int len = s.length(); //calculating length of string

    for (int i = 0; i < len; i++) {
      int count = 0;
      for (int j = 0; j < len; j++) {
        if (s.charAt(i) == s.charAt(j)) // making comparison with each character
          count++;
      }
      if (count >= k) {
        ch[i] = s.charAt(i);
        System.out.print(ch[i]); // subsequence to be printed
      }
    }

    return "null";
  }

  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    String s = in .next();
    int k = in .nextInt();
    String result = subsequenceAgain(s, k);

    in .close();
  }
}