如何将OctetString转换为可读字符串(C#)?

时间:2012-02-23 19:40:40

标签: c#

我正在为C#使用SNMP库,但它没有很好的文档。 当我请求一个Date时,它会给我一个OctetString,我不知道该怎么办。

当我将其转换为String时,它变为:     07 DC 02 17 0F 14 0E 00 2D 02 00

2 个答案:

答案 0 :(得分:4)

只是一个猜测

var b= "07 DC 02 17 0F 14 0E 00 2D 02 00"
        .Split(' ')
        .Select(s => byte.Parse(s, NumberStyles.HexNumber))
        .ToArray();

int year =b[0]*256 + b[1];
int month = b[2];
int day = b[3];
int hour = b[4];
int min = b[5];
int sec = b[6];

DateTime dt = new DateTime(year, month, day, hour, min, sec);

输出 2/23/2012 3:20:14 PM


修改

现在不再是猜测了。 以下是问题的SNMPv2-TC DateAndTime格式


修改-2

var strdateTime = 
    String.Format("{0}/{1,2:00}/{2,2:00} {3,2:00}:{4,2:00}:{5,2:00}.{6,2:00} {7}{8,2:00}:{9,2:00} UTC",
            year,month,day,hour,min,sec,
            b[7],Convert.ToChar(b[8]),b[9],b[10]);

输出:2012/02/23 15:20:14.00 -02:00 UTC

答案 1 :(得分:0)

根据OctetString.ToString Method的文件:

  

返回OctetStrig对象的字符串表示形式。如果   在对象中找到不可打印字符,输出为a   字符串的十六进制表示。 (重写Object.ToString()。)

请确保没有不可打印的字符。

<强>更新

有关实施的更多详细信息:OctetString.ToString() method