我正在尝试将以下有效负载转换为可读字符串。
这是一个包含信息的日志,我想在之后使用它来进行分析和处理。
这是有效负载消息:
0x234453006AD2C3005B71436C6173733A2061203A3A204173696D6F764661636164652E63616C6C28292072656672657368207B746F6B656E3D65303466663731622D336265342D343836632D623339622D3663633762396365646236397D10070D02040256
我知道该协议的内容如下:
Header: 3 bytes
ID: 4 bytes
Length: 2 bytes
LogDebug: 1 byte
LogData: N
Timestamp: 6 bytes
CS: 1 byte
我尝试使用:
CONVERT(VARCHAR(MAX), SUBSTRING(payload, 0, 3) + SUBSTRING(payload, 3, 4) + ...)
但是我无法使其工作。我在SSMS文档中看到,SUBSTRING只接受一些数据类型来处理payload,例如字符、二进制、文本、ntext或图像。
我尝试过
CONVERT(VARCHAR(MAX), (SUBSTRING(CONVERT(BINARY,Payload),0, 3)) + (SUBSTRING(CONVERT(BINARY,Payload),3, 4)))
但是尝试了很多方法都没有成功 :(
有什么建议吗?
编辑: 预期的日志应该如下所示:
000: ← 2016/07/13 00:04:02, (0x71)U2H.LOGDEBUG - Class: a :: AsimovFacade.call() refresh {token=e04ff71b-3be4-486c-b39b-6cc7b9cedb69}
我理解:
#DS
0
(零)的值为0x30
,因此您不应该在二进制值的一端看到303030
吗? (Unicode对于单个零是0030
。)是否有一些数据不是字符,例如两个字节的“长度”是16位整数? - HABO