c

我正在使用C进行SMS PDU编码。在对电话号码进行编码时遇到问题。如果电话号码是“ 12345678912”,则将其编码为“ 2143658719F2”,这是正确的。但是,当电话号码是“ 33689004000”时,它将被编码为“ 33869400F0”。编码后缺少奇数索引处的零。

代码为

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;
}

该问题的解决方案是什么?

fj9921 回答:c

错误可能不在显示的代码中,而是在查看结果的位置。我怀疑您有一个en-in/node_modules/@webcomponents而不是printf("%x",…)

本文链接:https://www.f2er.com/3166042.html

大家都在问