【问题标题】:What does it mean to convert an int to a 24-bit value?将 int 转换为 24 位值是什么意思?
【发布时间】:2020-12-07 01:21:19
【问题描述】:

我在一个项目中遇到了将整数值转换为 24 位值的要求,分为 3 个字节,在这个问题中得到了回答: How to represent a 5 digit decimal value as a 24 bit value?

但是,我很难理解将整数转换为 24 位值的基本含义

即:

int number = 12345;
            string output = string.Format("[{0}][{1}][{2}]",
                (number & 0xFF).ToString("X2"),
                ((number >> 8) & 0xFF).ToString("X2"),
                ((number >> 16) & 0xFF).ToString("X2"));

【问题讨论】:

  • 这有一些微妙之处。请考虑非常具体。谈论“整数”与谈论特定数据类型int 并不完全相同。这些事情当然密切相关,但细微的差别与问题完全相关。你真正要问的是int
  • 请展示 7 个示例输入和输出。
  • 技术上,任何小于16777216(无符号)或8388608(有符号)的整数都是的24位整数。所以“从根本上”,它意味着没有“将整数转换为24位值”。另一方面,根据您引用的问题,显然它们并不是真正的 24 位值,而是一系列 8 位值,其中首先显示最低有效字节。另一方面,...
  • ...您“遇到了要求” 在其他一些上下文中,其中 “将 [sic] 整数值转换为 24 位值” i> 可能还有别的意思。我们无法告诉您在这种情况下是什么意思;您需要询问产生需求的人。

标签: c# type-conversion


【解决方案1】:

整数可以是任意位数,还需要考虑endianessnegative numbers

假设一个无符号的 32 位数字作为输入,最简单的选择是简单地删除最高有效字节,即 2^25 将转换为 0。您可能希望在转换之前钳位该值以避免这种环绕行为。

将数字转换为离散字节的最简单方法应该是Bitconverter.GetBytes()

请注意,由于这些问题,使用 24 位数字有点痛苦,所以在大多数情况下,我建议尽可能使用 32 或 16 位值。我所知道的最接近现实世界的用法是 24 位彩色图像。如果大小是一个问题,使用某种形式的压缩通常足够有效。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多