首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C在十六进制中转换int并切割最后两位数。

问C在十六进制中转换int并切割最后两位数。
EN

Stack Overflow用户
提问于 2013-02-21 14:30:48
回答 4查看 1.9K关注 0票数 0

我使用C语言,在转换整数时遇到了问题。

我想做的是:

我有一个名为:校验和的整数。

我想以十六进制格式转换这个整数,然后只取最后两个数字,并将它们转换回一个dez格式的整数。

示例:

校验和= -864

在十六进制中,这将是: FFFFFFFFFFFFFCA0

最后两个数字是: A0

A0格式是: 160。

我怎么用C语言做这件事?

EN

回答 4

Stack Overflow用户

发布于 2013-02-21 14:36:16

代码语言:javascript
复制
char m_c_end_dec = (char)checksum & 0xff;
int m_end_dec = (int)m_c_end_dec;

简单的强制转换将最后一点作为char仅为1位,然后将其重铸回int,给出A0为160。

票数 1
EN

Stack Overflow用户

发布于 2013-02-21 14:35:45

我不知道这与(中间的)十六进制表示法有什么关系(我也不明白你为什么要大喊大叫)。只需取校验和的最后一个字节,并使用适当的格式字符串打印它:

代码语言:javascript
复制
printf("checksum is %d\n", checksum & 0xff);
票数 0
EN

Stack Overflow用户

发布于 2013-02-21 14:36:41

或者使用字符串格式。e.g

printf("%02x",校验和)

或用于大写打印(“%02X”,校验和)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15004805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档