我知道在 Nodejs 中有一個 Buffer 模塊:
import { Buffer } from "buffer/";
// node = ...
// labelSha = ...
Buffer.from(node labelSha, "hex");
Ruby 中的等價物是什么?
謝謝
uj5u.com熱心網友回復:
Ruby 字串和陣列是動態的,而不是固定長度的
在 Ruby 的核心或標準庫中確實沒有直接的比較,盡管我想您可以創建自己的模擬。甲Node.js的緩沖區是一個位元組的固定長度的序列。根據這對您的用例意味著什么,您可以使用以下一項或多項:
- 字串#位元組
- 字串#byteslice
- 陣列#pack和字串#unpack
訪問存盤的位元組,但 Ruby 中的 String 和 Array 物件都不是真正固定長度的,除非你凍結它們。然而,凍結的物件(對于大多數目的)是不可變的,所以這真的不是一回事。因此,截斷、切片、按索引替換或以其他方式洗掉元素以保持“固定大小”基本上取決于您。
如果您打算經常這樣做,您可以使用 getter 或 setter 方法創建 String 或 Array 的子類,該方法在您每次訪問實體變數時將其內容截斷為所需的大小。這很可能是您最好的選擇,盡管肯定有人已經撰寫了提供此功能的 gem。Ruby Toolbox和RubyGems.org是您搜索提供固定大小或回圈緩沖區實作的 gem 的最佳選擇,如果您不想實作自己的,但選項和質量會有很大差異,因為它們不是一部分Ruby 的內置類。
uj5u.com熱心網友回復:
感謝大家!
花了 2 個小時后,我還撰寫了自己的實作版本:
def nodejs_buffer_to_hex origin_string
i = 0
result = []
temp = ""
loop do
break if i == origin_string.length
temp = origin_string[i]
if i % 2 == 1
result << temp
temp = ""
end
i = 1
end
result = result.map do |e|
"0x#{e}".hex
end
return result
end
和用法:
nodejs_buffer_to_hex "ce159cf3" # => [206,21,156,243]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/408220.html
標籤:
