This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP指令——有符号32位饱和为无符号8位



hi,everyone:

我做优化时候,需要将一个有符号的32位  int 类型的数,做一个饱和操作,变成一个

无符号的8位的数。具体代码如下:

int  var;

if(var>255)  var = 255;    //大于255 就置为255

else if(var < 0) var = 0;  //小于0 就置为0

else   var = var;           // 0- 255 之间就保持不变

请问,有没有专门指令操作的,或者有比较快的方法?

Best Regards!

  • 有没有办法确认你的var的值的范围?

  • 我的一个思路,一次计算4个值

    如: int A,B,C,D,AB,ABCD

    AB = _spack2(A,B);

    CD = _spack2(C,D);

    ABCD = _spacku4(AB, CD);

    这样ABCD的四个字节就是分别你需要的四个值,用upack命令解包即可。

  • Louis 说:

    我的一个思路,一次计算4个值

    如: int A,B,C,D,AB,ABCD

    AB = _spack2(A,B);

    CD = _spack2(C,D);

    ABCD = _spacku4(AB, CD);

    这样ABCD的四个字节就是分别你需要的四个值,用upack命令解包即可。

    恩,差不多,但是,我感觉前边不应该用spack2把,我前边用了pack2.

    如果用了spack2的话,相当于进行了两次饱和操作。int先饱和为16位的,

    然后,再将16位的饱和为8位的。

    而我原来的意思是,直接从int饱和为8位的操作。