|
|
1
3
或
|
|
|
2
1
我想你想把字节组合成int? 您需要做的是在创建int时移动位 (OKI这是Java,因为这里没有我的C++代码)
只要您知道变量的长度,这个逻辑就可以使用任何转换格式。 |
|
|
3
0
我假设您的char数组包含字节(而不是实际的ASCII字符),您希望将其转换为16位有符号整数。下面的函数将用于MSB第一字节排序。我在这里使用无符号字符来表示字节输入(uint8_t)。
} 如果需要整数定义,可以使用如下内容:
|
|
4
0
在DSPIC33上,我怀疑你使用的是C++。如果你使用C++,你使用什么编译器,你有多少运行库?(你从哪儿弄来的!) 如果字节顺序正确,如果需要副本,可以使用memcpy(),如果只想使用缓冲区中的16位数字并且对齐正常,则只需转换指针。如果您正在管理缓冲区,那么在这样一个平台上使用union来满足这种需求是很正常的:
处理字符时,通过char-buf访问;处理int时,通过int-buf访问。 如果需要交换字节,只需实现swab()的一个变量并使用它而不是memcpy(),类似于其他答案或类似于以下代码的内容:
|
|
|
5
0
我不确定你的字节是char还是octet。您可能已经有了两个用dspic的16位字打包的八位字节,所以您没有更多的字节来打包它们。
这是一个C代码,但是没有什么可以处理C++的特性。它可以在C++模式下编译。您可以用CHISTE和CSTDDDEF替换Case.h和StDeff.h,以实现更严格的C++一致性。
实施注意事项:
是n个低位的位掩码,其中n=字节\位。它等于
|
|
|
6
-1
以下是编译和测试方法:
这个 按内部安排 接受5个参数并返回实际转换数组的大小,如果传入,这很方便 输出数组 这比实际转换后的大小要大,同时也是一种提取错误的方法。 一个简单的位移位运算符和+用于将两个字节组合成一个字。 我只是使用printf测试过程,我知道在嵌入式硬件中使用它通常需要分配代码空间。我只是包含了endian交换,以确保您能够看到在这两种情况下需要做什么,但是在实际的实现中可以很容易地删除这一点。 在 按内部安排 但这样很容易理解。 |
|
|
JeffreyH · 需要解释InvenSenses运动驱动程序 8 年前 |
|
|
gotti123 · 在MCU上查找Pin 8 年前 |
|
|
frank_010 · 在32位字存储器中连续读取3个字节 8 年前 |
|
|
LOSnel · 干扰irq将我从睡眠模式唤醒 8 年前 |
|
|
Juliano · ili9341不处理STM32f4发现 8 年前 |
|
|
yun · USB音频缓冲区欠载 8 年前 |
|
|
puzzled · 全球结构不起作用[关闭] 8 年前 |
|
|
Aimal · Elf十六进制表示法 8 年前 |
|
|
girikks · 结构值未在主源文件中更新 8 年前 |
|
|
user8235882 · 未在操作系统C中执行的for循环 8 年前 |