Portál AbcLinuxu, 5. května 2025 09:01
utilita "\x02A\x03"aby se to do jiného bafru převedlo na sekvenci bajtů 0x02, 0x41, 0x03 a 0x00. Existuje nějaká funkce v C která to udělá?
Řešení dotazu:
C
příkazy printf
(docela určitě existuje) a unpack
(to se mi nepodařilo najít)?
pak by šel napsat ekvivalent Perlovského
perl -E 'printf("%#.02x ", $_) for unpack("W*","\x02A\x03");' #řádek, aby šlo vidět podtržítko
unescaped = "\x02DATA\x03".decode("string_escape")
utilita "`printf \x02A\x03`"
$ gcc cstring-parse.c -o cstring-parse && ./cstring-parse "abc" = "abc" "a\\bc" = "a\bc" "a\x0abc" = "a bc"
$ gcc cstring-parse.c -o cstring-parse -DDEBUG&& ./cstring-parse START: a START: b START: c "abc" = "abc" START: a START: \ SLASH: \ START: b START: c "a\\bc" = "a\bc" START: a START: \ SLASH: x DIGIT1: 0 DIGIT2: a START: b START: c "a\x0abc" = "a bc"... nezapomeň pak zavolat free().
$ make && ./main "\2A\03" \2A\03 => ?A? 0x2 0x41 0x3
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.