#include <stdio.h>
int main() {
int data[2];
int *p = data;
scanf("%x",p);
scanf("%x",p+1);
int a = ((*p)<<8) + *(p+1);
int b = (*(p+1)<<8) + *p;
printf("%d,%d",a,b);
return 0;
}
8位就是一个char大小,定义unsigned char a[2]就够用了,转换的时候用无符号转换。代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
unsigned char a[2];
unsigned char* p = a;
unsigned short t1, t2;
scanf("%x %x", &a[0], &a[1]);
t1 = (*p) << 8;
p++;
t1 += (*p);
t2 = (*p) << 8;
p--;
t2 += (*p);
printf("%u %u", t1, t2);
p = 0;
return 0;
}
8位,就一个byte,你定义成Byte类型也行,int类型也行,定义成int的时候只有低8位是有效数据,高位是没有用的
输入按16进制输入,scanf里面的参数写%x就行了
剩下移位操作就是位运算吗
a[0]<<8|a[1]
a[1]<<8|a[0]
剩下按10进制输出,直接printf("%d")就行了