我有一个十六进制值数组,如果我想从特定的十六进制值中提取数值,我该怎么做?说十六进制值是08?我想将其转换为int?谢谢!
我的数组声明为: uint8_t * array = NULL; 并使用fread()
填充我在这几行上收到以下警告assignment makes pointer from integer without a cast
:
int a;
int i;
for(i =0; i < array_size; i++){
a = (int)array[i]
}
答案 0 :(得分:0)
如果您将十六进制值数组存储为string
,则可以使用strtol
转换它们,例如:
int decimal = (int)strtol("bbccddf0", NULL, 16);
如果您的十六进制值未存储为string
,则转化为int
应该可以达到您想要的效果。例如:
int int_variable = (int) hex_variable;
答案 1 :(得分:0)
在C中,十六进制值前面带有0x。例如0xF等于15,0xFF等于255。 为了将十六进制变量赋值给整数变量,运算符&#39; =&#39;会做的。例如,a [4] = b [4],whare a是整数,b是十六进制。
我有一个代码示例,可以更轻松地理解C
中的十六进制数字赋值#include<stdio.h>
void main(void)
{
int x = 0xF;
/* it also works as declaring unsigned x = 0xF */
printf("x in hex = %x\n", x);
int a = x; /* you can declare an variable value and assign to it the hex variable */
printf("a = %d\n", a); /* the output is : 15 */
printf("x = %d", x); /* the output is : 15 */
}