Open Ming-Y-ANG opened 4 weeks ago
在 1 的基础上我修改为 num < 0x1f, 执行下面的测试程序,发现像 256, 512 这种数 bertlv_tag_get_number 有问题?
int main(int argc, char **argv) { int num, tag; num = 30; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 31; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 32; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 64; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 128; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 255; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 256; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 257; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); num = 512; tag = bertlv_tag_make(BERTLV_CLASS_APPLICATION, BERTLV_TYPE_PRIMITIVE, num); printf("num: %d, tag: %x, num: %ld\n", num, tag, bertlv_tag_get_number(tag)); return 0; } num: 30, tag: 5e, num: 30 num: 31, tag: 5f1f, num: 31 num: 32, tag: 5f20, num: 32 num: 64, tag: 5f40, num: 64 num: 128, tag: 5f8180, num: 128 num: 255, tag: 5f81ff, num: 255 num: 256, tag: 5f8200, num: 0 num: 257, tag: 5f8201, num: 257 num: 512, tag: 5f8400, num: 0
感謝您的回報,現已修正這個問題。
在 1 的基础上我修改为 num < 0x1f, 执行下面的测试程序,发现像 256, 512 这种数 bertlv_tag_get_number 有问题?