标签: uint16

错误:'uint16_t'未声明?

我有代码

#include <emmintrin.h>
#include <stdio.h>

void print128_num(__m128i var)
{
    uint16_t *val = (uint16_t*) &var;
    printf("Numerical: %i %i %i %i %i %i %i %i \n",
           val[0], val[1], val[2], val[3], val[4], val[5],
           val[6], val[7]);
}
int main(void)
{
    __m128i a = _mm_set_epi32(4, 3, 2, 1);
    __m128i b = _mm_set_epi32(7, 6, 5, 4);
    __m128i c = _mm_add_epi32(a, b);

    print128_num(c);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,其中uint16_t没有声明.我正在使用GCC和MINGW.

这是完整的错误.

||In function 'print128_num':|
|6|error: 'uint16_t' undeclared (first use in this function)|
|6|error: (Each undeclared identifier is reported …
Run Code Online (Sandbox Code Playgroud)

c gcc undeclared-identifier uint16

23
推荐指数
1
解决办法
4万
查看次数

如何printf()uint16_t?

我需要使用printf()来打印uint16_t.这个SO答案(如何打印uint32_t和uint16_t变量值?)说我需要使用inttypes.h.

但是,我正在使用嵌入式系统,并且inttypes.h不可用.当uint16_t的格式说明符不可用时,如何打印uint16_t?

c format-specifiers uint16

13
推荐指数
3
解决办法
3万
查看次数

Swift:将Int16转换为Int32(或NSInteger)

我真的被卡住了!我不是ObjC的专家,现在我正在尝试使用Swift.我认为这会简单得多,但事实并非如此.我记得Craig说他们称Swift为"Objective-C without C",但OS X的基础中有太多的C类型.文件说许多ObjC类型会自动转换为Swift类型,可能是双向转换.我很好奇:C类型怎么样?

这是我被困的地方:

//array1:[String?], event.KeyCode.value:Int16
let s = array1[event.keyCode.value]; //return Int16 is not convertible to Int
Run Code Online (Sandbox Code Playgroud)

我在ObjC尝试了一些东西:

let index = (Int) event.keyCode.value; //Error
Run Code Online (Sandbox Code Playgroud)

要么

let index = (Int32) event.keyCode.value; //Error again, Swift seems doesn't support this syntax
Run Code Online (Sandbox Code Playgroud)

将Int16转换为Int的正确方法是什么?

int int32 uint16 swift

7
推荐指数
1
解决办法
1万
查看次数

使用python解压缩二进制数据

我想uint16用Python 将一组二进制数据解包到数据中.

Internet充满了使用示例,struct.unpack但只涉及处理大小为4的二进制数组的示例.

大多数这些示例如下(B是文件中的二进制数组)

U = struct.unpack("HH",B[0:4]);
Run Code Online (Sandbox Code Playgroud)

所以我试图解压缩大小为6的数组:

U = struct.unpack("HHH",B[0:6]);
Run Code Online (Sandbox Code Playgroud)

有用.

但如果我想解压缩一个大小的数组L(L是一对)该怎么办?我试过了:

U = struct.unpack("H"*(L/2),B[0:L]);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,提示器给我一个错误(L=512例如):

struct.error: unpack requires a string argument of length 512
Run Code Online (Sandbox Code Playgroud)

这条消息很奇怪,因为如果我想解压缩二进制数组uint16,我需要一个"HHH...HHH"这个数组的一半大小的字符串...

如果有人能给我一些帮助,我将非常感激.


我进步了一点......事实上,我尝试过:

U = struct.unpack("H"*8,B[0:8]); 
Run Code Online (Sandbox Code Playgroud)

有用.

U = struct.unpack("H"*10,B[0:10]);
Run Code Online (Sandbox Code Playgroud)

有用.

U = struct.unpack("H"*222,B[0:444]);
Run Code Online (Sandbox Code Playgroud)

它仍然有效

U = struct.unpack("H"*223,B[0:446]);
Run Code Online (Sandbox Code Playgroud)

它不起作用!它永远不会适用于大于446的尺寸

希望它能帮助任何人回答我.


@MarkRansom我检查了len(B),实际上,长度是444.我很确定B是一个大小为512的数组,因为B来自: B = f.read(512)其中F是一个8000字节大小的文件.所以read()有问题...感谢您的回答!但如果有人帮助解压缩大小为L的二进制数组,我将不胜感激

python arrays struct unpack uint16

6
推荐指数
3
解决办法
2万
查看次数

UInt16的数组,C#中的后缀是什么?

我正在尝试初始化内联一个UInt16数组.对于int,我可以执行以下操作:

int[] int_array = new[]{0,0,0,0};
Run Code Online (Sandbox Code Playgroud)

同时使用UInt16在没有强制转换的情况下无效:

UInt16[] uint16_array= new[]{(UInt16)0,(UInt16)0};
Run Code Online (Sandbox Code Playgroud)

那些演员阵容很烦人.我想知道C#中是否有任何后缀来消除赋值的歧义(如浮点数为0.0f).

c# arrays casting uint16

5
推荐指数
2
解决办法
3071
查看次数

打印uint16_t类型

我正在以这种方式读取二进制模式的文件:

fread(&pcap_header      ,sizeof(pcap_hdr_t      ),  1 , pFile);
fread(&pcaprec_header   ,sizeof(pcaprec_hdr_t   ),  1 , pFile);
fread(&ether_header     ,sizeof(ethernet_hdr_t  ),  1 , pFile);
fread(&ip_header        ,sizeof(ip_hdr_t        ),  1 , pFile);
fread(&tcp_header       ,sizeof(tcp_header_t    ),  1 , pFile);
fread(&modbus_header    ,sizeof(modbus_header_t ),  1 , pFile);
Run Code Online (Sandbox Code Playgroud)

而上面的所有变量都被定义为旁边的'sizeof()'函数中的类型.我正在尝试提取文件的特定部分并将其打印出来.这部分的大小是16位,它的定义如下:

uint16_t     ip_len;
Run Code Online (Sandbox Code Playgroud)

在'ip_hdr_t'类型中.我查看了WireShark并看到了这16位的实际值,它是0x0034.

我尝试了两件事:

  1. printf("size of ip header: %hu\n", ip_header.ip_len); 打印13312(好像位的值是0x3400)
  2. 将结构划分为两个8位变量: uint8_t ip_len; uint8_t ip_len2; 并单独打印: printf("size of ip header: %hu\n", ip_header.ip_len); printf("size of ip header: %hu\n", ip_header.ip_len2);

这次我收到了输出:ip header的大小:0(0x00)ip header的大小:52(0x34),这是正确的答案.

我的问题是:第一次印刷出了什么问题?

谢谢

c printf uint16

4
推荐指数
1
解决办法
1372
查看次数

提取无符号32位整数的上下字

要提取无符号32位整数的高位字和低位字,并将每个字存储在单独的uint16_t变量中,我执行如下操作(nbr是无符号的32位整数):

uint16_t lower_word = (uint16_t) nbr & 0x0000FFFF;  // mask desired word
uint16_t upper_word = (uint16_t) ((nbr & 0xFFFF0000) >> 16); // right-shift after masking
Run Code Online (Sandbox Code Playgroud)

显式转换为uint16_t是不必要的吗?还有什么其他更有效的方法,如果有的话,你建议获得所需的结果而不是这种方法吗?

c cpu-word uint32 uint16

4
推荐指数
2
解决办法
331
查看次数

如何将uint8_t和uint16_t转换为c ++中的浮点数?

我创建了uint8_t和uint16_t变量类型,并从一些寄存器中读取值.但是,我不确定我是否可以轻松地将它们转换为浮点数,如果转换具有数字意义.

将uint8_t和uint16_t转换为float的最佳方法是什么?

c++ floating-point uint16 uint8t

3
推荐指数
1
解决办法
2万
查看次数

Uint16Array到Uint8Array

我有一个基本问题.说我有一个Uint16Array,我有4号.

data_16=new Uint16Array([4]);  
Run Code Online (Sandbox Code Playgroud)

现在我的长度为1,byteLength为2;

我如何将其转换为Uint8Array.

我不想创建新视图.

data_8 = new Uint8Array(data_16)
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我得到数组长度1和byteLength 1.这不是我想要的.

我需要将16array中的16位值扩展为8位值,以便8位数组,因此最终会得到8位数组的8位数组.

我可以创建一个函数,用shif和所有东西进行转换.但它可以仅使用数组操作吗?

javascript arraybuffer uint16

3
推荐指数
1
解决办法
2831
查看次数

将int16_t转换为uint_8t*

我有一个库驱动的结果存储为int16_t值(它是一个负数,我可以使用绝对值)和另一个库函数,需要这个值几步之后,形式为uin8_t*.如何在不使用String的情况下完成此操作?

以下代码有效,但使用了可怕的字符串.有没有办法在不调用String或std :: string的情况下执行此操作?

 void setup() {
      Serial.begin(9600);
    }

    void loop() {
      delay(5000);
      String initialVal= String(-fetchInt()); 
      Serial.print("Initial value is: ");Serial.println(initialVal);//prints "76"
      uint8_t medianVal[sizeof(initialVal);
      medianVal.getBytes(medianVal, sizeof(initialVal));
      Serial.print("median value is: ");Serial.println(medianVal);//prints "76"
      uint8_t* finalVal = medianVal;
      Serial.print("final value is: ");Serial.println((char*)finalVal);//prints "76"
      }

    int16_t fetchInt(){
      return -76;
    }
Run Code Online (Sandbox Code Playgroud)

那么,如何将int16_t转换为uint8_t*

在下面的评论中已经指出它 Serial.println(static_cast<unsigned>(*finalVal));可行,但是这个解决方案将uint8_t转换为unsigned int,并且该方法需要uint8_t*.

我来自Java之类,似乎很难将整数转换为字符串.

c++ int arduino uint16 uint8t

3
推荐指数
1
解决办法
139
查看次数