Значения ASCII в шестнадцатеричном формате - PullRequest
0 голосов
/ 07 апреля 2009

Я пытаюсь проанализировать некоторые выходные данные с АТС и обнаружил что-то, чего не могу понять. В документации сказано следующее

Информация о типе звонка и функции. Восемь символов для «информации о состоянии 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 ]

2 голосов
/ 07 апреля 2009

Возможно, вы получите два символа (шестнадцатеричные цифры: 0-9, A-F). Первая цифра представляет шестнадцатеричное значение для старших 4 бит, следующая цифра для младших 4 бит.

Пример: Вероятно, вы получите что-то вроде строки «7C» в виде шестнадцатеричного представления растрового изображения: 01111100.

0 голосов
/ 07 апреля 2009

Очень тяжело без данных. Я предполагаю, что вы получите два байта (два символа ASCII), и вам нужно будет разделить их на битовом уровне.

Например, если первым символом является «A», вам необходимо найти его код символа (65 или гекс 0x41), а затем посмотреть на биты. Конечно, биты одинаковы независимо от десятичного или шестнадцатеричного числа, но это проще сделать вручную в шестнадцатеричном виде. 0x41 - это бит 5 и бит 1, так что это будет «внутренний вызов». Бит 1 кажется недокументированным.

Я не уверен, почему это выглядит так, как будто это потребует двух символов; только восемь битов задокументированы.

0 голосов
/ 07 апреля 2009

Восемь символов для «информации о состоянии 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
}
...