C语言中,16位数转换成两个8位数,怎么转?

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:27:40
我是这样写的,可是输出结果不对。
void main()
{
uchar b,c;
uint a=1262;

b=a&0xff;
c=a>>8;
}
该怎么写才能得到:b=62,C=12呢?

如果你要把它拆开来,可以用b=a/100;c=a%100;,但是用b=a&0xff; 是不可能的。a的unsigned int16进制表达为0x04f8,b=a&0xff,b=0x00f8,也就是238,不可能变成62。同样c=a>>8; 也只是把c变成0x04,也就是4。这些都是二进制操作,不可能给你十进制的答案。

1、可以使用位操作符>>,&来实现转换操作。

2、例程:

比如将十六进制数“2A12”拆成"2A"和"12",然后再把"2A"和"12"对调位置合成"122A"

#include<stdio.h>
int main(){
    int a=0x2a12;
    char b,c;
    b=a>>8;
    c=a&0x0ff;
    printf("%x,%x",b,c);
    a=(c<<8)|b;
    printf("\n%x",a);
    return 0;
}

#include <stdio.h>

void main()
{
unsigned char b,c;
unsigned short a=0x1262; //要是16进制的可以这样

b=a&0xff;
c=a>>8;

p