簡體   English   中英

將整數轉換為無符號字符*(將221轉換為“ \\ xdd”)

[英]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”部分。

由於不能保證221char類型的有效值,因此您可以做的最接近的事情是:

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM