将 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 指针 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 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