Chcę przekonwertować format ASCII string
na TBCD(Telephony Binary-Coded Decimal)
i odwrotnie w C. Przeszukałem wiele witryn, ale nie mogłem znaleźć odpowiedzi.Konwersja ASCII na TBCD w C
5
A
Odpowiedz
5
Najprostszym rozwiązaniem jest użycie pary tablic do odwzorowania każdego znaku ASCII na jego odpowiednik TBCD. I wzajemnie.
Od what I read on Wikipedia należy użyć następujących:
const char *tbcd_to_ascii = "*#abc";
const char ascii_to_tbcd[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,11, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, /* # * */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0 /* digits */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,12,13,14 /* a b c */
};
Jeśli masz TBCD, aby przekształcić go do ASCII byś zrobił:
/* The TBCD to convert */
int tbcd[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
/* The converted ASCII string will be stored here. Make sure to have enough room for the result */
char ascii[16];
/* Convert the TBCD to ASCII */
int i;
for (i = 0; i < sizeof(tbcd)/sizeof(*tbcd); i++)
ascii[i] = tbcd_to_ascii[tbcd[i]];
/* For safety, null terminate the ASCII string */
ascii[i] = 0;
Aby przekonwertować z ASCII na TBCD jest bardzo podobny :
for (i = 0; ascii[i]; i++)
tbcd[i] = ascii_to_tbcd[ascii[i]];
2
#include <ctype.h>
int cnv_tbcd(char *str, char *tbcd) {
int c = 0;
int err = 0;
for (c=0; str[c]; c++) {
if (isdigit(str[c])) {
tbcd[c] = str[c] & 0x0f;
} else {
switch(str[c]) {
case '*': tbcd[c] = 0x0a; break;
case '#': tbcd[c] = 0x0b; break;
case 'a': tbcd[c] = 0x0c; break;
case 'b': tbcd[c] = 0x0d; break;
case 'c': tbcd[c] = 0x0e; break;
default: tbcd[c] = 0xff; err++;
}
}
}
if (c % 2 == 0) {
tbcd[c] = 0x0f;
tbcd[c+1] = 0;
}
return err;
}
+0
tak, zaktualizowałem odpowiedź – perreal
Powiązane problemy
- 1. Konwersja kodu ASCII na char w Javie
- 2. Konwersja ciągów znaków binarnych na ASCII
- 3. Konwersja kodu JavaScript UTF-8 na ASCII (jak Iconv ('UTF-8', 'ASCII // TRANSLIT', $ string) w PHP)
- 4. Konwersja źródła C na C++
- 5. Znaki spoza ASCII w C
- 6. ręczna konwersja między znakami ASCII i .NET
- 7. Microsoft.VisualBasic.FileIO.TextFieldParser zmienia ± Ascii 241 na? Ascii 63
- 8. Konwersja znaków Hi-Ansi do odpowiednika Ascii (é -> e)
- 9. C# Hashset konwersja na listy
- 10. C# - Konwersja uint na bajt []
- 11. Konwersja CFStringRef na ciąg C?
- 12. Konwersja IPv6 na IPv4 w C#
- 13. Konwersja base64 na obraz w C#
- 14. konwersja int na krótki w C
- 15. Konwersja liczby dodatniej na ujemną w C#
- 16. Jak przekonwertować znak ASCII na int w C
- 17. Konwertuj ASCII char [] na szesnastkowy znak [] w C
- 18. Konwertuj z łańcucha ASCII zakodowanego w szesnastkowy na zwykły ASCII?
- 19. bash ascii na hex
- 20. Tłumaczenie liter nie w 7bit ASCII na ASCII (jak ń na n i ą na a)
- 21. Python: Konwersja kompleks słownika ciągów z Unicode do ASCII
- 22. Wyświetlanie drzewa w ASCII
- 23. Niejawna konwersja typu w C
- 24. Konwersja ciągów HTML-uciekł do zwykłego Unicode/ASCII
- 25. Konwersja kodu Win16 C na Win32
- 26. C++ Konwersja na podwójną konwersję tracąc precyzję?
- 27. Wywiad pytanie na C# niejawna konwersja
- 28. Konwersja BMP na PCX C# Compact Framework
- 29. Parse HEX ASCII na liczby?
- 30. C++ LibCurl - Konwersja kodu CURL na CString
T Implementacja C dla BCD jest podana tutaj: http://en.wikipedia.org/wiki/Double_dabble –
@kmkaplan Załóżmy, że mam IMSI w formacie TBCD, aby przekonwertować go na ASCII. W jaki sposób pomoże Array? –
@DJ Naprawdę nie wiem, czym jest IMSI, ale zredagowałem swoją odpowiedź, aby podać przykład konwersji tablicy TBCD na ciąg znaków ASCII. – kmkaplan