Порблему нашел: на самом деле пример написан весьма криво. У автора написано, IntToHex каждый раз в параметре принимает длину в байт, в его конкретном случае это прокатило (2-байтные числа просто насильно выводились), а я смотря на параметр в функции подумал, этот параметр уже означает 2-байтный результат. Потом уже хелп на деkab глянул и прояснилось. Ну в общем и нарушил длину и выравнивание.
А на самом деле ВСЕ 4 параметра передаются 4-байтными числами и не будет уже значительного количества непонятных нулей.
Код
strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "000E00000000000000000000000000001B0000000000000000000000030000");
strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "%.8X%.8X", u_tri.ya.cellid, u_tri.ya.lac);
strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "%.8X%.8X", u_tri.ya.operatorid, u_tri.ya.countrycode);
strleftlen -= snprintf (string_out + strlen(string_out), strleftlen, "FFFFFFFF00000000");
Интересно, что значат остальные байты...