You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SNMP DateAndTime格式字节数组转换为SNMP++ OctetStr?

将SNMP DateAndTime字节数组转换为SNMP++ OctetStr类型

SNMP的DateAndTime类型对应11字节的结构化字节串,你已经完成了日期的编码工作,只需将这个字节数组直接映射到SNMP++的OctetStr类型即可,注意先修正数组越界的问题:

步骤1:修正编码数组的错误

你提供的示例代码中,数组定义为uint8_t BFF[11];却给BFF[11]赋值(数组下标从0开始,最大下标为10),这会导致越界。正确的编码数组应该是:

// 编码日期:2022-11-10 12:30:15.11 UTC + 01:33
uint8_t BFF[11] = {
    22,  // 年份后两位(2022→22)
    20,  // 年份前两位(2022→20)
    11,  // 月份
    10,  // 日期
    12,  // 小时
    30,  // 分钟
    15,  // 秒
    11,  // 十分之一秒
    '+', // 时区偏移符号
    1,   // 时区偏移小时
    33   // 时区偏移分钟
};

步骤2:转换为SNMP++ OctetStr类型

SNMP++的OctetStr类支持直接从原始字节数组构造,有两种常用方式:

方式1:直接构造对象

#include <snmp_pp/octet.h>

// 传入字节数组和有效长度(11字节)
SNMP_pp::OctetStr dateTimeOctet(BFF, sizeof(BFF));

方式2:先创建空对象再赋值

#include <snmp_pp/octet.h>

SNMP_pp::OctetStr dateTimeOctet;
// 设置字节数据和长度
dateTimeOctet.set_data(BFF, sizeof(BFF));

关键说明

OctetStr是SNMP++专门用于处理SNMP OctetString类型的容器,它不依赖C风格字符串的'\0'终止符,直接使用传入的字节长度来确定有效数据,因此不需要在数组末尾添加'\0'。

内容的提问来源于stack exchange,提问作者DDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:01:12