Steck
написал 26 февраля 2006 года в 16:25 (832 просмотра)
Ведет себя
как мужчина; открыл 125 тем в форуме, оставил 550 комментариев на сайте.
#include
main()
{
char *d="Hello";
char *Str="";
int i;
for(i=0;i
Str=g_strdup_printf("%s%02X",Str,d[i]);
printf(Str);
печатает
48656C6C6F
}
Как мне получить из этого «48656C6C6F» снова строку
«Hello»
??
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

Суровый у тебя стиль, батенька… :-)
Ну, если минимально изменить твой код, то вот так, например
#include main() { char *d="Hello"; char *Str=""; char Out[strlen(d)]; int i; for(i=0;i Str=g_strdup_printf("%s%02X",Str,d[i]); printf(Str); printf("\n"); for(i=0;i sscanf(Str+2*i,"%2X",Out+i); printf(Out); printf("\n"); }Good Luck,
UT
нуууу. стиль не выдержан ;). Должен быть дополнительный memleak из `strlen (d) — 1\′ блоков, суммарным размером минимум `size * (size + 1) / 2; where size = strlen (d)'
А если забить на эти тонкости, то лучше, наверное, так:
#include int main () { char *d = "Hello"; char *Str; char *Out; int i; Str = (char*) malloc (strlen (d) * 2 + 1); for (i = 0; i < strlen (d); i ++) sprintf (&Str[2*i], "%02X", d[i]); printf ("Туда: `%s'\n", Str); Out = (char*) malloc (strlen (Str) / 2 + 1); for (i = 0; i < strlen (Str) / 2; i ++) sscanf (&Str[2*i], "%2X", &Out[i]); printf ("И обратно: `%s'\n", Out); free (Str); free (Out); return 0; }Оно вертится тьфу блин,
работает!
Спасибо всем. )
P.S а стиль у меня нормальный просто что-то vim странно глюкнул
в этот раз (o;
Опять проблем блин )
есть две функии
char *decode(char *src, int len) { char *Out=NULL; int i; Out = (char*) malloc (len/2 ); for(i=0; i < (len/2); i++) { // printf("OCT %s\n",&src[2*i]); sscanf(&src[2*i],"%2X",&Out[i]); } return Out; }В функию подается строка вида
«041F044004380432043504420020043A0430043A002004340435043B0430»
(«Привет как дела») и ее длинна
На одну букву приходится 4 символа..
После этой функции печатется эта строчка.
Но вот в чем проблема печатется только слово до первого пробела…все что после 0020 не выводится..
Если строка приходит без пробелов и любой длинны то отображается верно..
Запарился уже . пробывал все варианты а результат..(