[英]node.js - Slice a byte into bits
如何從緩沖區中取一個八位字節並將其轉換為二進制序列? 我想通過node.js解碼協議rfc1035 ,但發現很難處理位。
這是一個代碼,但它不適合我 - 因為它對我來說是一個黑盒子:
var sliceBits = function(b, off, len) {
var s = 7 - (off + len - 1);
b = b >>> s;
return b & ~(0xff << len);
};
使用位掩碼 ,八位位組是8位,因此您可以執行以下操作:
for (var i = 7; i >= 0; i--) {
var bit = octet & (1 << i) ? 1 : 0;
// do something with the bit (push to an array if you want a sequence)
}
示例: http : //jsfiddle.net/3NUVq/
你可能會提高效率,但這種方法非常簡單。 這循環在偏移i
,從7下降到0,並使用位掩碼1 << i
找到第i
位。 如果第i
位置位則bit
變為1
,否則為0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.