gpt4 book ai didi

c - C中的SMS PDU编码

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:47 24 4
gpt4 key购买 nike

我正在使用 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;
}

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

最佳答案

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

关于c - C中的SMS PDU编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58695354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com