如何使用C从数组中的字节中提取数值

时间:2015-02-09 00:29:30

标签: c int hex type-conversion

我有一个十六进制值数组,如果我想从特定的十六进制值中提取数值,我该怎么做?说十六进制值是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]
}

2 个答案:

答案 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 */
}