将 C 字符串转换为 unsigned char 指针

2024-01-09

我正在使用许多字节编译低级代码。在某些情况下,使用双引号括起来的旧 C 字符串来定义对我来说很方便。

但是,当使用 gcc 或 g++ 进行编译时(不知道其他编译器的行为),它一直困扰着我的指向字符串的符号。

基本上当我写这个的时候

const unsigned char & refok = *"ABCDEFGHI";

EDIT:好的,上面的代码并没有真正起作用,因为理论上它只是保留对字符串第一个字符的副本的引用。由于优化,它实际上允许某些编译器访问所有字符串,但可能随时中断。

or this

const unsigned char oktoo[10] =
    {'A','B','C','D','E','F','G','H','I',0};

编译器什么也没说。

但它绝对拒绝这个:

const unsigned char * bad = "ABCDEFGHI";

有消息

error: invalid conversion from 
   ‘const char*’ to ‘const unsigned char*’
   [-fpermissive]

这甚至不是一个警告,而是一个error.

我想知道为什么这个问题比使用引用或将单个字符从有符号字符转换为无符号字符时更严重?或者我错过了什么?


我认为你缺少一个lot东西的!

第一行可能做了与你想象的完全不同的事情。 (它涉及临时物品的转换和寿命的延长。)

第二行从大括号初始值设定项中相应的字符初始化每个无符号字符。

在第三行中,编译器是正确的:字符串文字具有类型const char *,并且您不能转换T* to a U*一般来说。

请注意,该标准明确要求char, unsigned char and signed char be distinct类型。这里的原因是char应该是平台的本机字节类型,而其他两个是显式无符号和有符号整数类型。无符号/有符号类型用于代数运算,而裸类型用于与系统交互(例如命令行参数和文件 I/O)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C 字符串转换为 unsigned char 指针 的相关文章

  • 无法在 QGLWidget 中设置所需的 OpenGL 版本

    我正在尝试在 Qt 4 8 2 中使用 QGLWidget 我注意到 QGLWidget 创建的默认上下文不显示 OpenGL 3 1 以上的任何输出 Qt wiki 有一个教程 http qt project org wiki How t
  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • 如何以编程方式删除受信任的根证书颁发机构中的证书?

    我需要能够从组织中的每台电脑中删除特定的证书 是的 我可以逐个座位 但我要到周四才能完成 而且我没有人力逐个座位 是否有使用 C 的编程方式来执行此操作 我认为你不需要编写任何 C 看看certmgr exe del http msdn m
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • MINIX内部碎片2

    我正在用 C 语言编写一些软件 它递归地列出给定目录中的所有文件 现在我需要计算出内部碎片 我花了很长时间研究这个问题 发现 ext2 上的内部碎片只发生在最后一个块中 我知道理论上你应该能够从索引节点号获得第一个和最后一个块地址 但我不知
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • 稀疏矩阵超定线性方程组c/c++库

    我需要一个库来解决 Ax b 系统 其中 A 是一个非对称稀疏矩阵 每行有 8 个条目 而且可能很大 我认为实现双共轭梯度的库应该没问题 但我找不到一个有效的库 我尝试过 iml 但 iml sparselib 包中缺少一些标头 有小费吗
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS

随机推荐

  • SSL 和 SocketChannel

    理想情况下 我只需要一个简单的SSLSocketChannel 我已经有一个可以通过普通方式读取和写入消息的组件SocketChannel 但对于其中一些连接 我必须通过网络使用 SSL 然而 这些连接上的操作是相同的 有谁知道免费的SSL
  • 如何在VBA中清空数组?

    我正在开发一个与 COM 服务器交换对象的 Excel VBA 插件 如下所示 get an array of objects Dim Ents As ISomething ComObject GetEntities Ents send a
  • log4j 记录两次

    我正在使用 log4j 来记录错误和其他系统信息 但来自在信息级别记录两次的信息 public static void main final String args throws Exception LOGGER info program
  • Java弹跳球

    我正在尝试编写一个Java应用程序 它在屏幕上绘制多个从框架边缘弹起的球 我能成功抽出一个球 然而 当我添加第二个球时 它会覆盖我绘制的初始球 代码是 import java awt import javax swing import ja
  • 从 iPhone 中的音乐文件中获取 NSData

    我已从我的 iPhone 设备中检索了所有音乐和视频 我现在困于将这些保存到我的应用程序中 我无法从文件中获取原始数据 任何人都可以帮我找到解决方案吗 这是我用来获取音乐文件的代码 MPMediaQuery deviceiPod MPMed
  • Urllib2 和 BeautifulSoup :不错的一对,但太慢 - urllib3 和线程?

    当我听到有关线程和 urllib3 的一些好消息时 我正在寻找一种方法来优化我的代码 显然 人们不同意哪种解决方案是最好的 下面我的脚本的问题是执行时间 太慢了 Step 1 我获取此页面 Step 2 我用 BeautifulSoup 解
  • 如何在错误时继续执行sql脚本?

    我们有几个迁移脚本 它们会根据版本更改架构 有时 迁移步骤 例如 向表添加列 已经手动或通过补丁安装完成 因此迁移脚本失败 如何防止脚本因错误而停止 最好是在特定的预期错误时 而是记录消息并继续执行脚本 我们使用 PostgresQL 9
  • 如何将库与 webpack 捆绑在一起?

    我想创建一个前端库 因此我想使用webpack 我特别喜欢 CSS 和图像加载器 但是 如果我使用 webpack 我只能需要非 JS 文件 因为我正在建立一个图书馆 所以我不能保证我的图书馆的用户也会这样做 有没有办法将所有内容捆绑到 U
  • 如何以编程方式向以编程方式创建的 UIView 添加约束?

    我在 viewDidLoad 中使用以下代码创建了一个 UIView 其中 secondview 显然是 UIView 的名称 secondview UIView alloc initWithFrame self view frame se
  • 无法打开依赖项文件 SwiftStdLibToolInputDependency.dep

    我正在使用 Siri Shortcuts 开发 iOS objc 应用程序 我一切正常but当我添加意图扩展 以处理后台支持 并尝试运行该应用程序时 我收到错误 Intent Extension的IntentHandler只有默认的实现 错
  • 另一个函数内的函数前向声明

    代码先行 void foo int x void bar int is this forward decl legal bar x void bar int x do stuff 在上面的代码中 foo calls bar 通常我把前向声明
  • 使用 ROOM 和 @Database 注解执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障

    我正在使用 Room 进行离线存储 我的模型包含 Room 不支持的列表 并且我编写了类型转换器 但现在我收到此错误 当我删除 Database 注释时 错误就会出现 但使用 Database 注释时 它会显示错误 这是我所有相关的课程 这
  • 加载图像的 jQuery 事件

    是否可以通过 jQuery 事件检测所有图像何时加载 理想情况下 应该有一个 document idle function or document contentLoaded function 但我找不到这样的东西 我想附加一个这样的事件
  • 使用 Node.js 设置语言提示的 Google Vision API 文本检测

    我在用着 google cloud vision使用 Node js 我使用如下示例代码 async function quickstart try Imports the Google Cloud client library const
  • 如何从 Perl 创建然后使用长 Windows 路径?

    我有一个构建过程的一部分 它在 Windows 中创建了一条长得可怕的路径 这不是我的错 它有几个目录深 并且没有一个目录名异常长 它们又长又多 足以让它过去MAX PATH 260 个字符 我在这些名称中没有使用除 ASCII 之外的任何
  • Java jar 文件未在 Linux 终端中运行

    我正在尝试运行 jar在 Linux 上的终端中输入文件但出现错误 root localhost dist java jar helloworld jar Exception in thread main java lang ClassFo
  • Java 线程与 Pthreads

    我今天在接受采访时被问到这个问题 当我们创建一个线程时pthread create POSIX 线程 线程自行启动 为什么我们需要显式调用start 在爪哇 当我们创建线程实例时 Java 不启动线程的原因是什么 我脑子一片空白 面试官时间
  • 在antlr中获取纯文本而不是令牌

    我正在尝试使用 antlr 创建一个解析器 我的语法如下 code codeBlock EOF codeBlock text tag1Ops tag2Ops tag1Ops START 1 TAG ID END 2 TAG tag2Ops
  • 为什么我们在使用类转换器时不应该使用enableImplicitConversion?

    The 类转换器文档 https github com typestack class transformer implicit type conversion say 隐式类型转换注意如果您将类验证器与类转换器一起使用 您可能不想启用此功
  • 将 C 字符串转换为 unsigned char 指针

    我正在使用许多字节编译低级代码 在某些情况下 使用双引号括起来的旧 C 字符串来定义对我来说很方便 但是 当使用 gcc 或 g 进行编译时 不知道其他编译器的行为 它一直困扰着我的指向字符串的符号 基本上当我写这个的时候 const un