高字节和低字节如何使用?

发布于 2024-11-09 00:47:49 字数 119 浏览 0 评论 0原文

我试图用 2 个字节来表示 32768。对于高字节,我是否使用与低字节相同的值,并且它会对它们进行不同的解释,还是我输入实际值?那么我会放一些类似的东西吗 32678 0 还是 256 0?或者两者都不是?任何帮助表示赞赏。

I am trying to represent 32768 using 2 bytes. For the high byte, do I use the same values as the low byte and it will interpret them differently or do I put the actual values? So would I put something like
32678 0 or 256 0? Or neither of those? Any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

甩你一脸翔 2024-11-16 00:47:49

在十六进制中,您的数字是 0x8000,即 0x80 和 0x00。
要从输入中获取低字节,请使用 low=input & 0xff 并获取高字节,请使用 high=(input>>8) & 0xff

从低字节和高字节中获取输入,如下所示: input=low | (高<<8)

确保您使用的整数类型足够大来存储这些数字。在 16 位系统上,unsigned int/shortsigned/unsigned long 应足够大。

In hexadecimal, your number is 0x8000 which is 0x80 and 0x00.
To get the low byte from the input, use low=input & 0xff and to get the high byte, use high=(input>>8) & 0xff.

Get the input back from the low and high byes like so: input=low | (high<<8).

Make sure the integer types you use are big enough to store these numbers. On 16-bit systems, unsigned int/short or signed/unsigned long should be be large enough.

沉睡月亮 2024-11-16 00:47:49

字节只能包含 0 到 255 之间的值(含 0 和 255)。 32768就是0x8000,所以高字节是128,低字节是0。

Bytes can only contain values from 0 to 255, inclusive. 32768 is 0x8000, so the high byte is 128 and the low byte is 0.

烟酒忠诚 2024-11-16 00:47:49

试试这个功能。
将 Hi_Byte 和 Lo_Byte 传递给函数,它以 Word 形式返回值。

WORD MAKE_WORD( const BYTE Byte_hi, const BYTE Byte_lo)
{
     return   (( Byte_hi << 8  ) | Byte_lo & 0x00FF );
}

Try this function.
Pass your Hi_Byte and Lo_Byte to the function, it returns the value as Word.

WORD MAKE_WORD( const BYTE Byte_hi, const BYTE Byte_lo)
{
     return   (( Byte_hi << 8  ) | Byte_lo & 0x00FF );
}
一页 2024-11-16 00:47:49

指针可以轻松做到这一点,比移位快得多,并且不需要处理器数学运算。

检查这个答案

但是:
如果我理解你的问题,你需要最多 32768 存储在 2 个字节中,所以你需要 2 个无符号整数,或 1 个无符号长整型。
只需将 int 更改为 long,将 char 更改为 int,就可以了。

Pointers can do this easily, are MUCH FASTER than shifts and requires no processor math.

Check this answer

BUT:
If I understood your problem, you need up to 32768 stored in 2 bytes, so you need 2 unsigned int's, or 1 unsigned long.
Just change int for long and char for int, and you're good to go.

忆梦 2024-11-16 00:47:49

32768 是 0x8000,因此您可以将 0x80 (128) 放入高字节,将 0 放入低字节。

当然,这是假设无符号值。 32768 实际上并不是带符号的 16 位值的合法值。

32768 is 0x8000, so you would put 0x80 (128) in your high byte and 0 in your low byte.

That's assuming unsigned values, of course. 32768 isn't actually a legal value for a signed 16-bit value.

瀟灑尐姊 2024-11-16 00:47:49

在小端平台上,十六进制的 32768 是 0080。 “高”(在我们的例子中是第二个)字节包含 128,“低”字节包含 0。

32768 in hex is 0080 on a little-endian platform. The "high" (second in our case) byte contains 128, and the "low" one 0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文