[英]Converting integer to unsigned char* (int 221 to “\xdd”)
我有一個函數,將unsigned char*
作為輸入。
例如說我有:
unsigned char* data = (unsigned char*) "\xdd";
int a = 221;
如何將我的整數a
轉換為unsigned char*
,以使data
和轉換后的a
無法區分? 我嘗試過使用sprintf,但是沒有運氣,我不確定如何處理“ \\ x”部分。
由於不能保證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
更新
也許我誤解了你的問題。 您還可以使用:
int a = 221;
unsigned char buffer[10] = {0};
buffer[0] = a;
如前所述,這個問題是沒有意義的,也是不可能的-您實際上並不希望轉換為指針類型的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.