簡體   English   中英

使用'sprintf'將十六進制轉換為字符串

[英]Converting hex into a string using 'sprintf'

我試圖將數組轉換為十六進制,然后將其放入一個字符串變量。 在以下循環中printf工作正常,但我不能正確使用sprintf。 如何將十六進制值作為ASCII填充到數組中?

static unsigned char  digest[16];
static unsigned char hex_tmp[16];

for (i = 0; i < 16; i++) {
  printf("%02x",digest[i]);  <--- WORKS
  sprintf(&hex_tmp[i], "%02x", digest[i]);  <--- DOES NOT WORK!
}
static unsigned char  digest[16];
static char hex_tmp[33];

for (i = 0; i < 16; i++)  {
  printf("%02x",digest[i]);  <--- WORKS
  sprintf(&hex_tmp[i*2],"%02x", digest[i]);  <--- WORKS NOW
}

也許你需要:

&hex_tmp[i * 2]

還有一個更大的陣列。

存儲為數字的字符與字符串不同:

unsigned char i = 255;
unsigned char* str = "FF";
unsigned char arr1[] = { 'F', 'F', '\0' };
unsigned char arr2[] = { 70, 70, 0 };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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