草庐IT

ecc_uint

全部标签

c++ - 在 C++ 中将字符串转换为 uint8_t 数组

我想要一个std::string对象(例如名称)到C++中的uint8_t数组。这函数reinterpret_cast拒绝我的字符串。由于我使用NS-3进行编码,一些警告被解释为错误。 最佳答案 如果你想要一个指向string数据的指针:reinterpret_cast(&myString[0])如果您想要一份string的数据:std::vectormyVector(myString.begin(),myString.end());uint8_t*p=&myVector[0]; 关于c

c++ - cout << hex 与 uint8 和 uint16 的行为

我注意到cout给我奇怪的结果,我找不到任何地方可以回答为什么。我所做的只是为uint8_t分配一些值和uint16_t然后尝试将它们写入标准输出。当我运行这个时:uint8_ta=0xab;uint16_tb=0x24de;cout我得到的结果:$./a.out24de$没有显示uint8_t的值。是什么原因造成的?我不认为对于一种类型没有针对另一种类型的cout实现。 最佳答案 std::uint8_t是unsignedchar的别名:typedefunsignedcharuint8_t;因此选择了采用char&的插入器重载,并

c++ - 我如何从 uint8_t vector 创建一个 istream?

我正在为过去只能读取本地文件的代码添加通过网络获取数据的功能。我正在使用的网络库以vector的形式发送和接收数据.我希望能够在读取文件后重用处理数据的代码,但该代码需要一个std::istream,有没有办法让istream读取vector数据?这是相同的数据,所以我觉得应该有一种方法,但我一直无法找到或弄清楚如何做的代码。当前代码:std::ifstreamstream("data.img",std::ios::in|std::ios::binary|std::ios::ate);if(!stream.is_open()){throwstd::invalid_argument("C

c++ - 奇怪的 uint32_t 到 float 数组转换

我有以下代码片段:#include#includestaticconstsize_tARR_SIZE=129;intmain(){uint32_tvalue=2570980487;uint32_tarr[ARR_SIZE];for(intx=0;x(arr[x]);}printf("%s\n",arr_dst[ARR_SIZE-1]==arr_dst[ARR_SIZE-2]?"OK":"WTF??!!");printf("magic=%0.10f\n",arr_dst[ARR_SIZE-2]);printf("magic=%0.10f\n",arr_dst[ARR_SIZE-1]);r

c++ - 为什么 int 加上 uint 返回 uint?

int加上unsignedint返回一个unsignedint。应该这样吗?考虑这段代码:#include#include#includeclasstest{staticconstintsi=0;staticconstunsignedintui=0;typedefBOOST_TYPEOF(si+ui)type;BOOST_STATIC_ASSERT((boost::is_same::value));//fails};intmain(){return0;} 最佳答案 如果“应该”是指“我的编译器的行为是否符合标准”:是。C++2003

c++ - __u8 和 uint8_t 之间的区别

谁能解释一下uint8_t和__u8之间的区别?我知道uint8_t是在stdint.h中定义的,它们在每个unix系统上都可用。/*Unsigned.*/typedefunsignedcharuint8_t;typedefunsignedshortintuint16_t;...如果我使用它们,那么我的意图是显而易见的。现在我偶然发现了__u8和__u16类型。对我来说似乎是一样的。其中一些类型在linux/types.h中定义#ifdef__CHECKER__#define__bitwise____attribute__((bitwise))#else#define__bitwise

c++ - 为什么 "stdint.h"的实现不同意 UINT8_C 的定义?

UINT8_C宏在“stdint.h”中定义,具有以下specification:宏UINTN_C(value)应扩展为对应于类型uint_leastN_t的整型常量表达式.然而,在野外,实现是不同的:#defineUINT8_C(value)((uint8_t)__CONCAT(value,U))//AVR-libc#defineUINT8_C(x_)(static_cast(x_))//QP/C++#defineUINT8_C(c)c//GNUCLibrary前两个实现看起来大致相同,但第三个实现不同:例如,以下程序打印1使用AVR-libc和QP/C++,但是-1使用glibc(

c++ - 高阶位——把它们变成 uint64_t 变成 uint8_t

假设您有一个uint64_t,并且只关心uint64_t中每个字节的高位。像这样:uint32_t:0000...10000000100000001000000010000000--->00001111有没有比以下方法更快的方法:return(((x>>56)&128)+((x>>49)&64)+((x>>42)&32)+((x>>35)&16)+((x>>28)&8)+((x>>21)&4)+((x>>14)&2)+((x>>7)&1))也就是移位x、屏蔽并为每个字节添加正确的位?这将编译成很多程序集,我正在寻找一种更快的方法......我使用的机器只有SSE2指令,我找不到有用的S

c++ - 冒号是什么意思(:) operator in "uint isWidget : 1;" in Qt?

这个问题在这里已经有了答案:Whatdoesacoloninastructdeclarationmean,suchas:1,:7,:16,or:32?(3个答案)关闭7年前。“uintisWidget:1;”中冒号(:)运算符的含义是什么?在Qt?是“uintisWidget:1;”等同于“uintisWidget(1)”?Qt中的代码是QObjectData{public:virtual~QObjectData()=0;QObject*q_ptr;QObject*parent;QObjectListchildren;uintisWidget:1;uintpendTimer:1;uin

c++ - 无法编译任何 C++ 程序;错误 : unknown type name 'uint8_t'

EDIT2:问题是不是简单的打印错误。我在下面的日志中打错了字,我更正了,但问题仍然存在。编辑:在下面尝试之后,我错误地使用gcc而不是g++运行了一次。问题在g++之前就存在,现在也存在。我目前使用的是MacOSHighSierra机器。我最近将很多文件从MacBookAir移到了这台机器上,包括我认为都是Xcode的垃圾。现在,当我尝试编译一个非常简单的C++程序时:#includeintmain(){//VAR_DECinta=4;//VAR_MANIPa=a*2;//VAR_PRINTstd::cout我收到以下荒谬的错误:jrfarah@Josephs-MBP:[config