首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Rust语言学习交流

    Sparse Merkle Tree解析

    由于MPT中存储nibble时用的是hex prefix编码,需要区分nibble长度的奇偶性和子节点类型,所以会额外有个一个字节的前缀,在SMT中没有做这方面的编码,所以nibble就是直接存储公共前缀即可 接着,调用skip_common_prefix函数,来判断待插入的visited与leaf node的nibble是否有公共前缀。判断的逻辑很简单,依次比较每个nibble是否一样。 在验证完公共前缀后,接下来就需要判断待插入和leaf的remainning nibble是否有公共前缀了(skip_common_prefix传入的不应该是nibble_iter的remaining nibble 在经过common prefix后,待插入地址和leaf对于remaining nibble的状态应该是一致的,要么都没有remaining nibble,要么都有。 ? 代码中,extension_nibble_iter是表示这个extension节点的path,这个是需要注意的,接着计算extension与待插入的nibble的common prefix。

    1.6K20发布于 2019-08-29
  • 来自专栏全栈程序员必看

    SENT协议

    ,一个半字节Nibble是通过2个下降沿之间的时间差来定义的。 如下是一个Nibble的电压逻辑信号: 时间精度以1个节拍Tick来定义(一般1个Tick的时间是3~10us),每一个Nibble从一个下降沿开始,并且之后再逻辑0状态至少维持4Ticks,之后下一个下降沿距离第一个下降沿的时间差作为 Nibble值的编码依据。 需要注意的是,后一个下降沿距离第一个下降沿至少相隔12Ticks,至多27Ticks,且相隔Tick数减去12即为最终的Nibble值,如此Nibble值最小为0,最大为15(27Tick-12Tick Data 数据段,12~162Ticks,即1~6个Nibble 4.CRC 校验字段,12~27Ticks,即1个Nibble 5.Pause 暂停脉冲 12~768Ticks,早期的SENT协议无此字段或者一个固定长度

    1.8K20编辑于 2022-09-07
  • 来自专栏鸿鹄实验室

    反转字符串绕杀软

    [2]; Nibble[0] = *pAscii++; Nibble[1] = *pAscii++; for (int j Nibble[j] = Nibble[j] - 'A' + 10; else if (Nibble[j] <= 'f' && Nibble[j] > = 'a') Nibble[j] = Nibble[j] - 'a' + 10; else if (Nibble[ j] >= '0' && Nibble[j] <= '9') Nibble[j] = Nibble[j] - '0'; pHex[i] = Nibble[0] << 4; // Set the high nibble pHex[i] |= Nibble[1]; //Set the low

    73020发布于 2021-03-30
  • 来自专栏Vehicle攻城狮

    SENT信号介绍

    2 一个Nibble(即4个Bits)的Status and Serial Communication pulse (12~27clock ticks)。 3 连续6个Nibbles的data pulses (每个Nibble:12~27 clock ticks)。 4 一个Nibble(即4个Bits)的 CRC及checksum pulse(12~27 clock ticks)。 5 一个可选的 pause pulse。 上面也说了一个半字节代表4个Bits(即一个Nibble),由于一个半字节可以表示0000~1111数值范围,因此可通过6个Nibble的大小来表示传感器数据,而每个Nibble的大小可通过时钟节拍tick 的个数来表示,根据协议每个Nibble大小由12~27个ticks来表示,如下: 一个时钟节拍tick表示时间单位,其范围为3~10us,一般为3us。

    3.2K40编辑于 2022-04-19
  • 来自专栏MPSOC

    Program Efuse Under Linux

    */ static u_int32_t convert_char_to_nibble(char in_char, unsigned char *num) { if ((in_char >= (str[converted_len],&upper_nibble) == 0) { if (convert_char_to_nibble(str[converted_len +1], &lower_nibble) == 0) { buf[converted_len/2] = (upper_nibble (str[converted_len], &upper_nibble) == 0) { if (convert_char_to_nibble(str [converted_len + 1], &lower_nibble) == 0) { buf[str_index] = (upper_nibble

    42210编辑于 2024-11-11
  • 来自专栏cwl_Java

    快速学习-帕特里夏树

    ,主要是为了解决效率问题 MPT(Merkel Patricia Tree) 梅克尔-帕特里夏树是梅克尔树和帕特里夏树的结合 以太坊中的实现,对 key 采用 Hex 编码,每个 Hex 字符就是一个nibble (半字节) 遍历路径时对一个节点只访问它的一个 nibble ,大多数节点是一个包含17个元素的数组;其中16个分别以 hex字符作为索引值,存储路径中下一个 nibble 的指针;另一个存储如果路径到此已遍历结束 整合在一个字节中保存,这就避免了不必要的浪费 这里就会带来一个问题:有可能 nibble 总数是一个奇数,而数据总是以字节形式存储的,所以无法区分 nibble 1 和nibbles 01;这就使我们必须分别处理奇偶两种情况 MPT 中还有一个可选的“结束标记”(用T表示),值为0x10 (十进制的16),它仅能在路径末尾出现,代表节点是一个最终节点(叶子节点) 如果路径是奇数,就与前缀 nibble 凑成整字节;如果是偶数 ,则前缀 nibble 后补 0000 构成整字节 编码示例 • > [ 1, 2, 3, 4, 5, ...]

    99010发布于 2020-04-17
  • 来自专栏【C】系列

    【以太网物理层】DM9161A

    when the signal indicates active high and TXEN is active, the HALT symbol substitutes the actual data nibble the TXD [4] pin, the fifth TXD data bit of the 5B symbol 20,19,18,17 TXD [0:3] I Transmit Data 4-bit nibble data inputs (synchronous to the TXCLK) when in 10/100Mbps nibble mode. data on the TXD [0:3] for both 100Mbps and 10Mbps nibble modes. TXCLK is provided by the PHY 25MHz in 100Mbps nibble mode, 2.5MHz in 10Mbps nibble mode, 10MHz in 10Mbps

    39500编辑于 2023-12-05
  • 来自专栏机器之心

    专栏 | 阿里KDD2017论文:基于大规模图计算的本地算法对展示广告的行为预测

    这些方法中的第一种是通过称为 NIBBLE[1] 的局部聚类算法来实现的。NIBBLE 可以最大限度地减少无向未加权图的聚类质量公制切割电导。 寻找一个与其大小成正比的时间段是本身非常有价值的例程,作者展示了如何使用 NIBBLE 作为一个子例程,从大图中重复删除小簇,以获得近似线性的时间图分区算法。 后来使用 PageRank 向量扩展了 NIBBLE,并且表明,通过单个 PageRank 向量的扫描可以得到具有 cut conductance 为ϕ的切割。 NIBBLE 和 PageRank NIBBLE 都是本地算法,它可以找出包含或靠近给定顶点的解决方案,而无需查看整个图形。本地算法的运行时间,当查询非空本地簇时,输出簇的大小几乎是线性的。 基于这个图定义,我们提出了 NIBBLE 算法的变形和两个延展,并证明了计算时间最多 O((k/γ−k+1)logm/ϵ)。 ?

    1.1K60发布于 2018-05-09
  • 来自专栏【C】系列

    【以太网物理层】DM9161A

    when the signal indicates active high and TXEN is active, the HALT symbol substitutes the actual data nibble the TXD [4] pin, the fifth TXD data bit of the 5B symbol 20,19,18,17 TXD [0:3] I Transmit Data 4-bit nibble data inputs (synchronous to the TXCLK) when in 10/100Mbps nibble mode. data on the TXD [0:3] for both 100Mbps and 10Mbps nibble modes. TXCLK is provided by the PHY 25MHz in 100Mbps nibble mode, 2.5MHz in 10Mbps nibble mode, 10MHz in 10Mbps

    35200编辑于 2023-12-05
  • 来自专栏【C】系列

    【以太网物理层】DM9161A

    when the signal indicates active high and TXEN is active, the HALT symbol substitutes the actual data nibble the TXD [4] pin, the fifth TXD data bit of the 5B symbol 20,19,18,17 TXD [0:3] I Transmit Data 4-bit nibble data inputs (synchronous to the TXCLK) when in 10/100Mbps nibble mode. data on the TXD [0:3] for both 100Mbps and 10Mbps nibble modes. TXCLK is provided by the PHY 25MHz in 100Mbps nibble mode, 2.5MHz in 10Mbps nibble mode, 10MHz in 10Mbps

    28200编辑于 2023-12-05
  • 来自专栏【C】系列

    【以太网物理层】DM9161A

    when the signal indicates active high and TXEN is active, the HALT symbol substitutes the actual data nibble the TXD [4] pin, the fifth TXD data bit of the 5B symbol 20,19,18,17 TXD [0:3] I Transmit Data 4-bit nibble data inputs (synchronous to the TXCLK) when in 10/100Mbps nibble mode. data on the TXD [0:3] for both 100Mbps and 10Mbps nibble modes. TXCLK is provided by the PHY 25MHz in 100Mbps nibble mode, 2.5MHz in 10Mbps nibble mode, 10MHz in 10Mbps

    30000编辑于 2023-12-05
  • 来自专栏云深之无迹

    低速协议系列:SPI.3(串并数据的 FPGA 演示)

    ] = IO1 的 4bit pack16[11:8] = IO2 的 4bit pack16[15:12]= IO3 的 4bit 而真实 QSPI 的数据语义更像每个时钟周期四条线同时贡献一个 nibble 那更像这种拼法: 第 0 个 nibble:{IO3_bit0, IO2_bit0, IO1_bit0, IO0_bit0} 第 1 个 nibble:{IO3_bit1, IO2_bit1, IO1 _bit1, IO0_bit1} 第 2 个 nibble:... 第 3 个 nibble:... 打包成 16bit 就是 nibble0+nibble1+nibble2+nibble3,只要改代码里面 pack16_reg <= {...}

    12110编辑于 2026-03-03
  • 来自专栏C++ 动态新闻推送

    C++ 中文周刊 2024-06-17 第160期

    {0b0001, 0, 0, 0, 0, 0, 0b0100, 0, 0, 0, 0, 0, 0b0010, 0b1000, 0, 0}; uint8x16_t high_nibble_mask data = vld1q_u8(reinterpret_cast<const uint8_t *>(start)); uint8x16_t lowpart = vqtbl1q_u8(low_nibble_mask , vandq_u8(data, v0f)); uint8x16_t highpart = vqtbl1q_u8(high_nibble_mask, vshrq_n_u8 } } } 一次查表 void AdvanceStringTableSimpler(const char *&start, const char *end) { uint8x16_t low_nibble_mask data = vld1q_u8(reinterpret_cast<const uint8_t *>(start)); uint8x16_t lowpart = vqtbl1q_u8(low_nibble_mask

    19110编辑于 2024-07-30
  • 来自专栏ReganYue's Blog

    为什么x86架构一个字节是8个bit

    此外,我想知道“nibble”一词是否来自BCD——在BCD的时代,经常会引用半个字节(因为每个数字都是4 bits)。因此,有一个单词来表示“4 bits”,人们称为“nibble”。 如今,“nibble”对我来说感觉有点陈旧了——除了作为一个趣闻之外,我肯定从来没有使用过它(这是一个非常有趣的词!)。 维基百科上关于nibble的一句话支持了这个我的这个猜测: nibble用于描述在IBM大型计算机中以压缩的十进制格式(BCD)存储数字的内存量。 The nibble is used to describe the amount of memory used to store a digit of a number stored in packed

    60230编辑于 2023-05-24
  • 来自专栏hotarugaliの技术分享

    AdvancedEncryptionStandard

    Ciphertext block = 16 bits (128 bits for AES) image.png 数据表示格式如下: image.png 一轮加密流程如下: image.png Nibble

    12720编辑于 2022-03-01
  • 来自专栏数据库相关

    pt-osc 遇到一个not null 不带default值的案例

    LOCK IN SHARE MODE /*pt-online-schema-change 8 copy nibble*/SELECT /*! LOCK IN SHARE MODE /*pt-online-schema-change 8 copy nibble*/2025-05-29T14:53:59 Dropping triggers...DROP

    15900编辑于 2025-05-29
  • 来自专栏云深之无迹

    低速协议系列:SPI.2(多根数据线的采样哲学)

    并行的数据在何时被串行 首先是物理上面多出了 3 个 IO,做输出 因为4 个 IO 就是 4bit(也叫半比特-nibble),然后每两个 SCLK 周期的数据(即两个 nibble)才组合成一个 byte 控制器层(QSPI 外设)→ 自动拼接成字节 我们可以瞬间进行采样,有了个 4 个 01,一般是 IO3,2,1 ,0这样的,4 位数据被同时锁存到 QSPI 控制器的输入寄存器中 第1个周期:采样 nibble_high = [IO3, IO2, IO1, IO0] 第2个周期:采样 nibble_low = [IO3, IO2, IO1, IO0] 然后自动组合: byte = (nibble_high << 4) | nibble_low(当然这里硬件可能不是这样工作的,但是也是这样的拼接方式) ,组合后的字节被放入 RX FIFO(接收缓冲区)。

    12810编辑于 2026-03-03
  • 来自专栏Linux运维技术之路

    pt-table-sync异常问题处理总结

    to use when comparing the tables, in order of preference (default Chunk,Nibble # pt-table-sync --replicate=test.ck2 --sync-to-master h=172.16.2.218,u=ptck,p=xxxxxx --algorithms=Nibble # pt-table-sync --replicate=test.ck2 --sync-to-master h=172.16.2.218,u=ptck,p=xxxxxx --algorithms=Nibble

    1.1K20编辑于 2022-06-07
  • 来自专栏公共互联网反网络钓鱼(APCN)

    .arpa域名滥用机制分析与基础设施层防御策略研究

    由于IPv6地址长度较长,其对应的.arpa域名结构更为复杂,采用 nibble(半字节)反转格式。uri.arpa:定义于RFC 3403,用于通过DNS进行统一资源标识符(URI)的动态发现。 1.2.0.192) self.ipv4_pattern = re.compile(r'^(\d{1,3}\.){3}\d{1,3}$') # 正则表达式匹配IPv6反向解析格式 (nibble format) self.ipv6_nibble_pattern = re.compile(r'^([0-9a-f]\.){32}[0-9a-f]$') def detect(self ValueError: return False def _validate_ip6(self, prefix): """验证ip6.arpa前缀是否为合法的IPv6 nibble 逆序""" # 简化验证:检查长度和字符集 if not self.ipv6_nibble_pattern.match(prefix): return

    6910编辑于 2026-03-12
  • 来自专栏sickworm

    Merkle Patricia Trie(翻译)

    else: hexarray = [flags] + [0] + hexarray // hexarray now has an even length whose first nibble     else:        hexarray = [flags] + [0] + hexarray    // hexarray now has an even length whose first nibble

    1.2K40发布于 2019-09-25
领券