Есть ли в JS какая-либо функция, подобная этой int.to_bytes() в Python?

#javascript #python #node.js

Вопрос:

Я нашел где-то в переполнении стека, что мы можем достичь int.from_bytes() функциональности в Node.js с помощью:

 const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]) // 0x12345678 = 305419896
console.log(buf.readUInt32BE(0)) // 305419896
 

Есть ли какая-либо альтернатива int.to_bytes() ? Я хочу сначала использовать int.from_bytes() , а затем нужно выполнить некоторые манипуляции и снова хочу преобразовать его с помощью int.to_bytes() .

Комментарии:

1. Привет, просто используй writeUInt32BE вместо read

2. я получаю разные результаты … это логика python, которую я хочу реализовать i = int.from_bytes(полный, «большой») < # сдвиг влево в возврате битов pad (т. е. to_bytes(bfs, «большой»)), но когда он преобразуется с использованием to_bytes, он также использует «bfs», и взятие i вычисляется с использованием from_bytes

Ответ №1:

Вы можете вернуть исходные байты, используя .values() метод, возвращающий итератор массива, поэтому его можно использовать с оператором распространения или Array.from , если вам нужно:

 const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]) // 0x12345678 = 305419896
console.log(buf.readUInt32BE(0)) // 305419896

console.log(...buf)
// 18 52 86 120

const arr = Array.from(buf)
console.log(arr)
// [18, 52, 86, 120]
 

Обратите внимание, что console.log выходные данные представлены в десятичном, а не шестнадцатеричном формате.

Комментарии:

1. i = int.from_bytes(полный, «большой») < # сдвиг влево в возврате битов pad (т. е. to_bytes(bfs, «большой»)) Это логика, которую я хочу реализовать, но когда она преобразуется с использованием to_bytes, она также использует «bfs», и взятие i вычисляется с использованием from_bytes

Ответ №2:

в python класс int имеет метод классов from_bytes

 bytes = [0x12, 0x34, 0x56, 0x78]
a = int.from_bytes(bytes, "big", signed=False)
print(a)
#305419896
 

Комментарии:

1. но я хочу добиться такой же функциональности в nodejs