0

背景是这样的:我正在使用带有租用号码的 ClickaTell 来接收传入的 SMS 文本消息。我正在编写一些代码来拼凑多部分/串联的短信。为此,我需要从“用户数据头”或 UDH 中提取信息。此处描述了 UDH 的格式:http ://en.wikipedia.org/wiki/Concatenated_SMS

现在,Clickatell 有时会向我发送如下所示的 UDH:

050003fe0303

这很好 - 看起来像 UDH。都好。但有时他们会向我发送一个如下所示的 UDH:

303530303033666530333033

请注意,这是与上面第一个示例相同的 UDH 的替代编码。

我需要做的是弄清楚为什么这两种编码是等价的。第二种编码几乎肯定是由成对的数字组成的。所以:

30 = 0
33 = 3
35 = 5

我不明白为什么“3”前缀变为“6”。看起来这发生在我们到达“8”之后。我设法计算出 66 = f、65 = e 和 63 = c,所以我猜测代码是:

30 = 0
31 = 1
...
38 = 8
60 = 9
61 = a
...
66 = f

谁能确认这个编码?这是你以前见过的吗?有谁知道为什么3变成6?

你的好奇...

4

1 回答 1

1

字符 '0' - '9' 的 ASCII 十六进制代码是 0x30 -> 0x39。

0x61 是小写的“a”,0x66 是“f”等。

我不知道你为什么认为'9'是0x60?

你可以在这里看到完整的表格:http ://www.asciitable.com/

于 2011-11-06T21:07:00.613 回答