草庐IT

char_bit

全部标签

c++ - 按位移位将 unsigned char 提升为 int

以下代码:unsignedcharresult;result=(result使用gcc版本4.6.4(Debian4.6.4-2)编译,带有-Wconversion标志导致警告警告:从“int”转换为“unsignedchar”可能会改变其值[-Wconversion]这是为什么? 最佳答案 因为标准是这么说的。二元运算符的操作数进行积分提升,其中任何小于int被提升为int;操作的结果有也输入int。如果原始值是,比如说,0x12,结果将是0x120,并将其分配给一个unsignedchar会引起值的变化。(分配的值将为0x20。

C++ 编辑 char* argv[] 的元素

大家都知道这个函数:intmain(intargc,char*argv[]){}我想在Linux中为我的程序编写命令行界面,这通常由getopt_long()我的程序会像这样从命令行执行:pop3get--limit25--recent因此,argv[]将包括pop3作为它的程序名称,其余的都被视为选项。我想从我的字符串中删除pop3并将其后的第一个标记设置为数组的第一个元素。除了循环之外,还有其他方法可以做到这一点吗? 最佳答案 递增argv指针,递减argc。示例:intmain(intargc,char*argv[]){arg

将 char * 转换为 char * const *

请原谅这个问题的基本“性”。我有时不知所措。我有一个char*但我需要将它转换为char*const*才能在fts()函数中正确使用它。我该怎么做?谢谢 最佳答案 你不应该做那种转换,因为类型不兼容。关于指针和指向指针的指针char*是一个指向字符串的指针,而char**是一个指向字符串的指针。(const是一个奖励)。这可能意味着您不应提供字符串,而应提供字符串数组。这两件事显然是不相容的。不要将它们与Actor混在一起。关于fts_*API要找到您问题的解决方案,我们需要阅读fts_*函数API(例如http://linux.d

c++ - 如何从 unsigned char * 模数和指数 65537(RSA_F4) 创建 RSA 公钥

我正在尝试从模数类型char[]生成一个rsa公钥,我现在的指数是RSA_F4(65537);但是当我尝试使用“n”和“e”的值生成我的公钥时,RSA_public_encrypt返回-1;谢谢!我的代码:#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;intmain(void){//modulusinformatcharhex;charkey[]="C0E7FC730EB5CF85B040EC25DAEF2

c++ - '/usr/include/c++/4.4/bits/'中的位是什么意思

'/usr/include/c++/4.4/bits/'中的位是什么意思Linux,当然是gcc。 最佳答案 根据libstdc++文档,该文件夹的官方名称是:"Filesincludedbystandardheadersandbyotherfilesinthebitsdirectory"其中“位”可能只是指一些微不足道的东西,例如“构成您通过标准header包含的内容的实现的位”。例如,如果您包含标准的header,那么您实际上包含了bits/c++config.h、bits/STL_relops.h、bits/STL_pair.

c - extern char **environ 的定义在哪里?

我们可以像这样在C中获取环境变量:externchar**environ;intmain(intargc,char*argv[]){intcount=0;printf("\n");while(environ[count]!=NULL){printf("[%s]::",environ[count]);count++;}return0;}但是environ的定义在哪里呢?我在unistd.h中找不到它。它是如何工作的? 最佳答案 environ在Glibc源文件中定义为全局变量posix/environ.c.

c & 海湾合作委员会 : Stack growth and alignment - for a 64 bit machine

我有以下程序。我想知道为什么它在以下64位机器上输出-4?我的哪些假设出错了?[Linuxubuntu3.2.0-23-generic#36-UbuntuSMPTueApr1020:39:51UTC2012x86_64x86_64x86_64GNU/Linux]在上面的机器和gcc编译器中,默认情况下b应该先被压入,a被压入第二个。堆栈向下增长。所以b应该有更高的地址,而a应该有更低的地址。所以结果应该是积极的。但是我得到了-4。谁能解释一下?参数是在堆栈帧中占用2个字节的两个字符。但我看到的差异是4,而我期望的是1。即使有人说这是因为对齐,但我想知Prop有2个字符的结构没有以4个字

c - 如何将 64 位整数转换为 char 数组并返回?

我在将int64_t转换为char数组并返回时遇到问题。我不知道下面的代码有什么问题,这对我来说是完全合乎逻辑的。如图所示,该代码适用于a,但不适用于显然属于int64_t范围的第二个数字b。#include#includevoidint64ToChar(charmesg[],int64_tnum){for(inti=0;i>(8-1-i)*8;}int64_tcharTo64bitNum(chara[]){int64_tn=0;n=((a[0]输出是aNum=123456789bNum=71777215744221775该代码还给出了两个我不知道如何摆脱的警告。warning:int

linux - std::exception(const char*) 非标准构造函数的替代方法

我的VisualC++代码使用接受字符串的std::exception构造函数,我正在尝试将代码移植到Linux/G++。我应该使用什么异常类? 最佳答案 MicrosoftVisualC++的std::exception(constchar*)构造函数是非标准的。在C++标准库中,std::exception有一个constchar*what()const方法,它不提供指定字符串的方法,除非通过覆盖。您应该重写代码以使用std::runtime_error或来自的其他类别之一作为备选。当然,不需要更改捕获std::exceptio

c - _LARGEFILE_SOURCE 和 _FILE_OFFSET_BITS=64 有什么区别?

我了解-D_FILE_OFFSET_BITS=64导致off_t为64位。那么-D_LARGEFILE_SOURCE做了哪些-D_FILE_OFFSET_BITS=64尚未完成的事情?这些定义究竟做了什么? 最佳答案 GLIBCFeaturetestmacros文档状态:_LARGEFILE_SOURCEIfthismacroisdefinedsomeextrafunctionsareavailablewhichrectifyafewshortcomingsinallpreviousstandards.Specifically,th