ASCII值以十六进制表示法

时间:2009-04-07 14:19:04

标签: c# hex pbx

我正在尝试从PBX解析一些输出数据,我找到了一些我无法弄清楚的东西。 在文档中它说明了以下

  

通话类型和功能的信息。 “状态信息3”的八个字符,以十六进制表示法表示以下ASCII值。

1. Character 
Bit7 Incoming call 
Bit6 Outgoing call 
Bit5 Internal call 
Bit4 CN call
2. Character 
Bit3 Transferred call (transferring party inside) 
Bit2 CN-transferred call (transferring party outside) 
Bit1 
Bit0

任何想法如何解释这个?我当时没有原始数据可以匹配,但我仍需要弄明白。

3 个答案:

答案 0 :(得分:2)

可能你会收到两个字符(十六进制数字:0-9,A-F)第一个数字表示最高有效4位的十六进制值,下一个数字表示最低有效4位。

实施例: 您可能会收到类似字符串“7C”的内容,如位图的十六进制表示:01111100。

答案 1 :(得分:0)

  

“状态信息3”的八个字符,后面的ASCII值以十六进制表示。

如果认为这意味着以下内容。

  1. 我猜你会得到8个字节 - 每行一个字节。
  2. 这是错误的用语。它们表示每个字节有两个十六进制数字,但称之为字符。
  3. 所以它只是一个带有位标志的字节 - 或者更确切地说是一个包含八个这样的字节的数组。

    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
    }
    

答案 2 :(得分:0)

没有数据非常困难。我猜你会得到两个字节(两个ASCII字符),并且需要在位级别选择它们。

例如,如果第一个字符是'A',则需要查找其字符代码(65或十六进制0x41),然后查看这些位。当然,无论十进制或十六进制,这些位都是相同的,但它更容易用十六进制手动完成。 0x41是第5位和第1位设置,因此这将是一个“内部调用”。第1位似乎没有记录。

我不确定为什么它看起来好像需要两个字符;它只记录了8位。