【发布时间】:2016-12-30 14:38:53
【问题描述】:
我正在尝试将字符串消息转换为 C 中的十六进制值。
例如,如果我有类似“abc”的消息,我想在 162636 等之前收到它。我的代码如下。在这段代码中,我必须做一些 concat 操作来存储它们,但现在我只能存储 36 个。我该如何存储它们?
unsigned char swapNibbles(char x)
{
return ( (x & 0x0F)<<4 | (x & 0xF0)>>4 );
}
void encode(char *message, char password[40]) {
unsigned char *reversedInput = malloc(strlen(message));
for (int i = 0; i < strlen(message); ++i) {
reversedInput=swapNibbles(message[i]);
}
printf("%2x TERS ",reversedInput);
//unsigned char *bitwiseMessage = (unsigned char*)message;
//printf("DÜZ %s\n",bitwiseMessage);
//printf("TERS %u\n", swapNibbles(bitwiseMessage));
}
【问题讨论】:
-
这个答案提供了一种方法来做到这一点stackoverflow.com/a/41356195/7076153
-
@Berkin 这是不投稿的另一个原因。您是否包含
stdlib.h? -
malloc(strlen(...))(几乎总是)是错误的。 -
你在做什么?将
strlen()转换为指针并将其传递给malloc?!你的编译器应该为此对你大喊大叫。
标签: c char unsigned-char