虽然当UDH不存在时我可以成功编码和解码SMS消息的用户数据部分,但是当存在UDH时(在这种情况下,对于连接的SMS),我很难这样做.
当我解码或编码用户数据时,我是否需要在执行此操作之前将UDH添加到文本中?
本文提供了一个编码例程示例,用于补偿带有填充位的UDH(我仍然不完全理解),但它没有给出传递给例程的数据的示例,因此我没有明确的用例(我在网站上找不到解码样本):
http://mobiletidings.com/2009/07/06/how-to-pack-gsm7-into-septets/.
到目前为止,如果我在解码之前将UDH添加到用户数据中,我已经能够获得一些结果,但我怀疑这只是一个巧合.
作为示例(使用https://en.wikipedia.org/wiki/Concatenated_SMS中的值):
UDH := '050003000302'; ENCODED_USER_DATA_PART := 'D06536FB0DBABFE56C32'; // with padding,evidently DecodedUserData := Decode7Bit(UDH + ENCODED_USER_DATA_PART); Writeln(DecodedUserData);
输出:“ß@ø¿Æ@ hello world”
EncodedUserData := Encode7Bit(DecodedUserData); DecodedUserData := Decode7Bit(EncodedEncodedUserData); Writeln(DecodedUserData);
相同的输出:“ß@ø¿Æ@ hello world”
没有预先设置UDH,我得到了垃圾:
DecodedUserData := Decode7Bit(ENCODED_USER_DATA_PART); Writeln(DecodedUserData);
输出:“PKYY§An§eYI”
处理这个问题的正确方法是什么?
在编码用户数据时,我是否应该在文本中包含UDH?
我是否应该在解码后剥离垃圾字符,或者我(我怀疑)完全脱离这个假设?
虽然这里的解码算法似乎没有UDH,但它似乎没有考虑任何UDH信息:
Looking for GSM 7bit encode/decode algorithm.
如果有人可以让我按照正确的方式继续前进,我将永远感激不尽.非常感谢任何明确的示例/代码示例. 原文链接:https://www.f2er.com/delphi/102277.html