我有一个以unsigned char*
为输入的函数。
比如说我有:
unsigned char* data = (unsigned char*) "\xdd";
int a = 221;
如何将我的整数a
转换为unsigned char*
,以便data
和我转换后的a
无法区分?
我试过玩sprintf,但没有任何运气,我不知道如何处理“\ x”部分。
答案 0 :(得分:3)
由于continue
不能保证是221
类型的有效值,因此您可以做的最接近的事情是:
char
这是一个示例程序及其输出:
int a = 221;
unsigned char buffer[10];
sprintf((char*)buffer, "%c", a);
输出:
#include <stdio.h>
int main()
{
unsigned char* data = (unsigned char*) "\xdd";
int a = 221;
unsigned char buffer[10];
sprintf((char*)buffer, "%c", a);
printf("%d\n", buffer[0] == data[0]);
printf("%d\n", buffer[0]);
printf("%d\n", data[0]);
}
<强>更新强>
也许我误解了你的问题。您也可以使用:
1
221
221
答案 1 :(得分:1)
如上所述,问题没有意义且不可能 - 您实际上并不想转换为const char *
,这是一种指针类型。相反,您希望转换为char
的数组,然后使用其名称获取该数组的地址。
int x = 221;
char buf[5];
snprintf(buf, sizeof buf, "\\x%.2x", x);
/* now pass buf to whatever function you want, e.g.: */
puts(buf);