如何在Octave中将两个8位数字组合为16位

冬日士兵

我正在处理来自GY-87(加速度传感器和陀螺仪传感器模块)的数据,我从中收到的数据的格式为ACCEL_YOUT_HIGH和ACCEL_YOUT_LOW,Y轴分别指定了HIGH和LOW值。有人告诉我“高和低寄存器本质上是8位的,因此两者的组合将是16位有符号数据”。但是我真的不知道如何将它们组合为16位数据。这是一个示例:ACCEL_YOUT_HIGH = 254 ACCEL_YOUT_LOW = 144

我已经尝试过JAVAScript的方法,但是它不能以八度运行。

var number8Bit1 = firstNumber & 0xff;
var number8Bit2 = ((firstNumber >> 8) & 0xff);

因为您的数据是16位带符号的,所以我认为最优雅的解决方案是使用类型转换(如Andy所评论)。

为了使类型转换解决方案正常工作,您可以执行以下操作:

  1. 将每个值转换为 uint8
  2. 根据两个uint8元素构建一个数组(首先放置较低的元素,因为我们的系统是little-endian
  3. 使用typecast两个字节转换为单一int16元素。
  4. 将结果强制转换为double(您可以跳过此部分,但这是常见的做法-万一您需要对结果应用计算)。

代码示例:

high = 254;
low = 144; 
res = double(typecast([uint8(low), uint8(high)], 'int16'))

结果:

res = -368

如果您要使用纯数学运算(如Sami所述),则可以按照以下步骤进行操作:

res = high*256 + low;
if (res >= 2^15)
    res = res - 2^16; %Correct the sign.
end

我觉得不太优雅,因为if声明不清楚。


您还可以使用位位移bitor以及typecast(如克里斯评论)。
看起来像C代码res = (short)((high << 8) | low)

res = typecast(uint16(bitor(bitshift(high, 8), low)), 'int16');

我发现它不如第一种解决方案优雅,因为在MATLAB / Octave中移位和或运算不是自然的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中将2个4位无符号数字组合为1个8位数字

来自分类Dev

如何在C中将2个4位无符号数字组合为1个8位数字

来自分类Dev

在JavaScript中将两个16位数字组合并转换为一个32位数字(浮点数)

来自分类Dev

使用8位寄存器(汇编)将两个16位数字相加

来自分类Dev

如何在JavaScript中将两个8位转换为16位,反之亦然?

来自分类Dev

仅使用8位数字将两个32位数字相乘

来自分类Dev

AVR 汇编:将一个 16 位数字加载到两个 8 位寄存器中

来自分类Dev

如何获取字符串的全部1位数字或相邻的2位数字组合

来自分类Dev

列出所有6位数字中的3位数字组合

来自分类Dev

如何在python中将8个32个十六进制数据列表加入单个256位数字列表?

来自分类Dev

如何在6502 asm中将16位数字除以2?

来自分类Dev

8085程序在8085模拟器中添加两个8位数字

来自分类Dev

如何计算两个包含8位值的数组的16位点积?

来自分类Dev

如何对两个带有4位数字(年份)的字符串进行排序?

来自分类Dev

如何在Python中将8位数字转换为实际字节?

来自分类Dev

我如何在python 2.7中将一位数字输出为两位数

来自分类Dev

如何将 8 位输入拆分为两个 4 位数据

来自分类Dev

正则表达式中以两个相似的数字开头的8位数字?

来自分类Dev

Laravel字段验证:允许8位或16位数字

来自分类Dev

使数字和字母的所有6位数字组合成为可能

来自分类Dev

如何在Python中将两位数字放在小数点后两位

来自分类Dev

如何将两个包含“大数字”(超过30位数字)的字符串相乘?

来自分类Dev

如何在16位数字上执行按位运算(Arduino)

来自分类Dev

Excel 2010-如何在数字前加上“ 0”使8位数字变为9位数字

来自分类Dev

从两个8位向量创建一个16位向量

来自分类Dev

正则表达式:如何匹配两个精确指定的4位数字之一

来自分类Dev

16位数字的按位运算

来自分类Dev

如何在Java中将两个整数打包成4位短整数?

来自分类Dev

使用左移和按位或将两个无符号字节组合为单个整数值

Related 相关文章

  1. 1

    如何在C中将2个4位无符号数字组合为1个8位数字

  2. 2

    如何在C中将2个4位无符号数字组合为1个8位数字

  3. 3

    在JavaScript中将两个16位数字组合并转换为一个32位数字(浮点数)

  4. 4

    使用8位寄存器(汇编)将两个16位数字相加

  5. 5

    如何在JavaScript中将两个8位转换为16位,反之亦然?

  6. 6

    仅使用8位数字将两个32位数字相乘

  7. 7

    AVR 汇编:将一个 16 位数字加载到两个 8 位寄存器中

  8. 8

    如何获取字符串的全部1位数字或相邻的2位数字组合

  9. 9

    列出所有6位数字中的3位数字组合

  10. 10

    如何在python中将8个32个十六进制数据列表加入单个256位数字列表?

  11. 11

    如何在6502 asm中将16位数字除以2?

  12. 12

    8085程序在8085模拟器中添加两个8位数字

  13. 13

    如何计算两个包含8位值的数组的16位点积?

  14. 14

    如何对两个带有4位数字(年份)的字符串进行排序?

  15. 15

    如何在Python中将8位数字转换为实际字节?

  16. 16

    我如何在python 2.7中将一位数字输出为两位数

  17. 17

    如何将 8 位输入拆分为两个 4 位数据

  18. 18

    正则表达式中以两个相似的数字开头的8位数字?

  19. 19

    Laravel字段验证:允许8位或16位数字

  20. 20

    使数字和字母的所有6位数字组合成为可能

  21. 21

    如何在Python中将两位数字放在小数点后两位

  22. 22

    如何将两个包含“大数字”(超过30位数字)的字符串相乘?

  23. 23

    如何在16位数字上执行按位运算(Arduino)

  24. 24

    Excel 2010-如何在数字前加上“ 0”使8位数字变为9位数字

  25. 25

    从两个8位向量创建一个16位向量

  26. 26

    正则表达式:如何匹配两个精确指定的4位数字之一

  27. 27

    16位数字的按位运算

  28. 28

    如何在Java中将两个整数打包成4位短整数?

  29. 29

    使用左移和按位或将两个无符号字节组合为单个整数值

热门标签

归档