gpt4 book ai didi

在C中将有符号整数转换为无符号整数

转载 作者:行者123 更新时间:2023-12-04 10:59:22 25 4
gpt4 key购买 nike

我正在尝试将两个 8 位数字组合成一个无符号整数,但无论我使用哪种类型转换,结果仍然是有符号数字。该代码是使用 CodeWarrior 10.1 为 freescale 微处理器 MC9S08LH64 编译的。

我试过的东西没有用- 移动并添加两个 8 位数字,然后在每一步中将它们强制转换为无符号整数。- union/struct 将两个 8 位类型组合起来,将它们和结果编号转换为无符号整数。- 使用 unsigned int 指针(下面的代码)

unsigned int acquire_sensor_voltage_internal_adc()
{ //this is internal ADC
unsigned int result;
unsigned int* data_ptr;
char print_buffer [50];
int_convert cvt;
//internal adc collecting counts of input voltage
//______________________________________________

//writing to ADCSC1A initiate the conversion sequence
ADCSC1A= 0x09;
while(!ADCSC1A_COCOA){}

cvt.parts.p0 = ADCRHA;
cvt.parts.p1 = ADCRLA;
data_ptr = &cvt.int_number;
result = (unsigned int)*data_ptr;

sprintf(print_buffer,"here!!!>>>>>>>%d\r\n",result);
serial_sendString(print_buffer,strlen(print_buffer));
//_______________________________________________
return (unsigned int) result;
}

//definition of int_convert from.h file
typedef union{
unsigned int int_number;
struct{
unsigned char p0;
unsigned char p1;
}parts;
}int_convert;

最佳答案

你可以试试:

result = ((unsigned)ADCRHA) << 8 | (unsigned)ADCRHB;

然后使用正确的格式说明符 %u 而不是 %d

关于在C中将有符号整数转换为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com