【问题标题】:ASCII values in hexadecimal notation十六进制表示法的 ASCII 值
【发布时间】:2009-04-07 14:19:03
【问题描述】:

我正在尝试解析来自 PBX 的一些输出数据,但我发现了一些我无法真正弄清楚的东西。 在文档中它说如下

呼叫类型和功能的信息。 'status information 3' 的八个字符,后面是十六进制的 ASCII 值。

1.性格 Bit7 来电 Bit6 呼出 Bit5 内部通话 Bit4 CN 调用 2.性格 Bit3 转接电话(转接方在里面) Bit2 CN-转接电话(外线转接方) 位 1 位0

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

【问题讨论】:

    标签: c# hex pbx


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      如果认为这意味着以下。

      1. 您将获得 8 个字节 - 我猜是每行一个字节。
      2. 这只是一个错误的术语。它们表示每个字节有两个十六进制数字,但称它们为字符。

      所以它只是一个带有位标志的字节——或者更准确地说是一个由八个这样的字节组成的数组。

      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
      }
      

      【讨论】:

        【解决方案3】:

        没有数据很难。我猜你会得到两个字节(两个 ASCII 字符),并且需要在位级别将它们分开。

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

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

        【讨论】:

          猜你喜欢
          • 2016-03-05
          • 1970-01-01
          • 1970-01-01
          • 2019-02-03
          • 2014-10-12
          • 2011-12-09
          • 1970-01-01
          • 2015-08-23
          • 2012-10-02
          相关资源
          最近更新 更多