Это не работает, потому что вы создаете новый буфер из представления буфера в виде строки. Это приведет к буферу, тогда при декодировании будет строка буфера '00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C'
, но из-за hex
буфер будет пустым. если вам нужно console.log(Buffer.from('00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C', 'hex')
, вы увидите пустой буфер.
Кроме того, '00 48 00 65 00 6C 00 6C 00 6F 00 20 4E 16 75 4C'
не является шестнадцатеричным представлением UTF-16 для «Hello 世界». когда кодируется как строка, это:: 攀 氀 氀 漀 ᙎ 䱵. 48 00 65 00 6c 00 6c 00 6f 00 20 00 16 4e 4c 75
- это «Привет 世界» в гексах UTF-16, я получил это от запуска console.log(Buffer.from('Hello 世界', 'utf16le'));
.
Чтобы ответить на вопрос о том, как вы можете преобразовать '48 00 65 00 6c 00 6c 00 6f 00 20 00 16 4e 4c 75'
обратно в «Привет 世界», вы можете сделать следующее:
let hexStrings = '48 00 65 00 6c 00 6c 00 6f 00 20 00 16 4e 4c 75'.split(' '); // split string chunks
let hex = hexStrings.map(x => parseInt(x, 16)); // convert string chunks to hexadecimal
let buffer = Buffer.from(hex); // create buffer from hexadecimal array
let string = buffer.toString('utf16le'); // convert buffer to string
console.log(string); // output -> Hello 世界
Надеюсь, это поможет!