首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SMS PDU编码

SMS PDU编码
EN

Stack Overflow用户
提问于 2019-11-04 22:21:15
回答 1查看 290关注 0票数 1

我正在用C编写SMS PDU编码,我在编码电话号码时遇到了问题。如果电话号码为"12345678912",则编码为"2143658719F2“正确。但当电话号码为"33689004000“时,编码为"33869400F0”。编码后奇数索引处的零丢失。

代码是

代码语言:javascript
复制
static int
EncodePhoneNumber(const char* phone_number, unsigned char* output_buffer, int buffer_size)
{
    int output_buffer_length = 0;  
    const int phone_number_length = strlen(phone_number);
    if ((phone_number_length + 1) / 2 > buffer_size)
        return -1;

    int i = 0;
    for (; i < phone_number_length; ++i) {

       if (phone_number[i] < '0' && phone_number[i] > '9')
           return -1;

        if (i % 2 == 0) {
            output_buffer[output_buffer_length++] = BITMASK_HIGH_4BITS | (phone_number[i] - '0');
        } else {
            output_buffer[output_buffer_length - 1] =
                (output_buffer[output_buffer_length - 1] & BITMASK_LOW_4BITS) |
                 ((phone_number[i] - '0') << 4); 
        }
    }

   return output_buffer_length;
}

这个问题的解决方案是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 22:51:31

错误可能不在显示的代码中,而是在您查看结果的位置。我怀疑您使用的是printf("%x", …)而不是printf("%02x", …)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58695354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档