我正在尝试解析来自 PBX 的一些输出数据,但我发现了一些我无法真正弄清楚的东西。在文档中它说以下
呼叫类型和功能的信息。“状态信息 3”的八个字符,后面是十六进制表示法的 ASCII 值。
1.性格 Bit7 来电 Bit6 呼出 Bit5 内部通话 Bit4 CN 调用 2.性格 Bit3 转接电话(转接方在里面) Bit2 CN-转接电话(外线转接方) 位 1 位0
任何想法如何解释这个?我当时没有可以匹配的原始数据,但我仍然需要弄清楚。
您可能会收到两个字符(十六进制数字:0-9,AF)第一个数字表示最高有效 4 位的十六进制值,下一个数字表示最低有效 4 位。
示例:您可能会收到类似字符串“7C”的内容作为位图的十六进制表示:01111100。
“状态信息 3”的八个字符,后面是十六进制表示法的 ASCII 值。
如果认为这意味着以下。
所以它只是一个带有位标志的字节——或者更准确地说是一个由八个这样的字节组成的数组。
Bit
7 incoming
6 outgoing
5 internal
4 CN
3 transfered
2 CN transfered
1 unused?
0 unused?
您可以将其映射到枚举。
[BitFlags]
public enum CallInformation : Byte
{
Incoming = 128,
Outgoing = 64,
Internal = 32,
CN = 16
Transfered = 8,
CNTransfered = 4,
Undefined = 0
}
没有数据很难。我猜你会得到两个字节(两个 ASCII 字符),并且需要在位级别将它们分开。
例如,如果第一个字符是“A”,则需要查找其字符代码(65 或十六进制 0x41),然后查看位。当然,无论十进制还是十六进制,这些位都是相同的,但是在十六进制中手动操作更容易。0x41 是第 5 位和第 1 位设置,所以这将是一个“内部调用”。第 1 位似乎没有记录。
我不确定为什么看起来好像需要两个字符;它只记录了八位。