【发布时间】:2016-12-12 06:18:21
【问题描述】:
我想将 unsigned char 转换为 hex(使用 unsigned int)。到目前为止,这是我的代码。我有一个 program1 生成一个 unsigned char 数组,而另一个 program2 只接受十六进制(使用 unsigned int),所以我想要实现的是获取 unsigned char 数组的输入并将该数组转换为十六进制。
(例如,program1 输出“1234567812345678”,program2 应该输出“31323334353637383132333435363738”)
对不起,如果这个问题看起来很愚蠢。在这里四处寻找答案,但似乎不是我想要的。
uint64_t phex (unsigned char[16], long);
int main (void) {
int i;
unsigned char key[16] = "1234567812345678";
uint64_t* keyHex = phex(key,16); //store into an array here
for(i = 0; i < 16; i++)
printf("%.2x ", keyHex[i]);
free(keyHex);
return 0;
}
uint64_t phex(unsigned char* string, long len)
{
int i;
//allocate memory for your array
uint64_t* hex = (uint64_t*)malloc(sizeof(uint64_t) * len);
for(i = 0; i < len; ++i) {
//do char to int conversion on every element of char array
hex[i] = string[i] - '0';
}
//return integer array
return hex;
}
【问题讨论】:
-
0x1234567812345678十六进制是1311768465173141112十进制。我不知道你从哪里得到31323334353637383132333435363738。也许您想将二进制数据转换为十六进制字符串表示形式? -
@BarmakShemirani 我想将 1234567812345678(十进制)转换为十六进制,即 31323334353637383132333435363738。