C 中的按位运算在 char 中接收二进制
我通过 C 中的串行接收 2 个字节的二进制信息。
我以字符形式接收它们。
所以我需要加入 2 个字符来创建一个 int 但我不确定如何做到这一点..首先第一个字节是二进制格式而不是字符格式..所以我不确定如何将其转换为可用的形式我的程序。
I am receiving 2 bytes of binary information via Serial in C.
I am receiving them in a char.
So I need to join the 2 chars to make a int but Im unsure how to do that.. first of all the first byte is in binary format and not char format.. So im unsure how I Can convert it into a useable form for my program.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
只是
OR
将它们放在一起吗?确保它们没有签名或进行相应的转换(转移签名的东西是令人讨厌的)。
Just
OR
them together ?Make sure they're unsigned or cast accordingly (shifting signed stuff is nasty).
您可以使用类似这样的内容:
这假设
char1
包含最高有效字节。否则交换 1 和 2。You can use something like this:
This assumes
char1
contains the most significant byte. Switch the 1 and 2 otherwise.使用
unsigned char
来避免符号扩展问题。use
unsigned char
to avoid sign-extension problems.首先,最好以 unsigned 字符形式接收它们,这样就不会出现符号扩展等问题。
如果您想将它们组合起来,您可以使用以下内容:
或:
根据系统的字节序,并假设您的系统具有八位
char
类型。For a start, it would be better to receive them in an unsigned char just so you have no issues with sign extension and the like.
If you want to combine them, you can use something like:
or:
depending on the endian-ness of your system, and assuming your system has an eight-bit
char
type.如果 MSB(最高有效字节)在前:
如果 LSB(最低有效字节)在前:
if MSB (Most Significant Byte) comes first:
if LSB (Least Significant Byte) comes first: