8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

一个从 0 到 255 的字节,从 0 重新缩放到 7

Himanshu Kandpal 2月前

37 0

单个 1 字节可以从 0 到 255。我打算将其重新缩放为从 0 到 7。我已经完成了这个:bit8 := uint8(136)// 将 1 字节从 0 重新缩放为 2^3-1,即从 0 到 7bit3 := bit8 / 0xff * 0b011...

单个 1 字节可能从 0 255 。我打算将其重新缩放为从 0 7 。我已完成此操作:

bit8 := uint8(136)

// To re-scale 1 byte from 0 to 2^3-1 i.e. 0 to 7
bit3 := bit8 / 0xff * 0b0111

结果 bit3 0 ,但我预计它会是 3 4 取决于向下或向上舍入。由于浮点精确值将是 136/255*7 = 3.733333333 .

我如何才能实现我想要的输出?此时,四舍五入并不重要。只要方便就行。

笔记

我希望操作尽可能高效。因为它将在循环内完成。因此,以下解决方案不是 最佳 方案:

bit8 := uint8(136)

// To re-scale 1 byte from 0 to 2^3-1 i.e. 0 to 7
bit3 := uint8(float64(bit8) / 255.0 * 7.0)
帖子版权声明 1、本帖标题:一个从 0 到 255 的字节,从 0 重新缩放到 7
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Himanshu Kandpal在本站《go》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您的第一次尝试是零,因为您正在执行整数除法,而 x/255 将始终为零。您可以先乘以 7,但随后您将需要更大的 int 类型。

  • \“我希望它是 3 或 4,具体取决于向下或向上舍入。\”整数除法不会对某些中间浮点值(如 3.73333)进行\“舍入”。

  • 取字节的前 3 位(向下舍入):

    bit3 := bit8 >> 5
    
  • @Megidd 四舍五入整数除法(而不是截断)。方法取决于您是要向上舍入还是舍入到最接近的数或其他什么

  • 另一种看待这个问题的方式是,将 256 缩放到 8,即 x*8/256,减少到 x/2^5 或 x>>5。

返回
作者最近主题: