如何在 C 中使用和不使用 sprintf 将十六进制转换为 Ascii?

2024-03-21

I used strtol要将字符串转换为十六进制,现在我需要将其打印到屏幕上。我不确定是否可以使用sprintf因为我在这块板上只有 20k 内存可以使用。欢迎替代方案。


要手动执行此操作,最简单的方法是使用一个将 nybbles 映射到 ASCII 的表:

static const char nybble_chars[] = "0123456789ABCDEF";

然后将一个字节转换为 2 个十六进制字符——假设unsigned char是字节的最佳表示,但不对其大小进行假设 - 提取每个 nybble 并获取它的 char:

void get_byte_hex( unsigned char b, char *ch1, char *ch2 ) {
    *ch1 = nybble_chars[ ( b >> 4 ) & 0x0F ];
    *ch2 = nybble_chars[ b & 0x0F ];
}

这可以直接扩展到更广泛的数据类型,并且应该在各种体系结构中生成相当简洁的代码。

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

如何在 C 中使用和不使用 sprintf 将十六进制转换为 Ascii? 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 年、月和日参数描述了无法表示的日期时间异常

    我使用以下代码将一个对象添加到 ASP NET MVC 3 应用程序内的列表中 但该对象的属性之一给我带来了困难 ls Add new UserRoleModel UserRoleId 1 UserName Paul InsertDate
  • 如何在 Visual Studio 的输出窗口中隐藏异常类型?

    我正在测试一些东西 输出窗口中充满了异常 如何过滤输出窗口中显示的异常类型 Note 在这种情况下 不可能避免异常 据我所知 隐藏异常类型是不可能的 但要过滤掉所有异常消息 请右键单击输出窗口并取消选中 异常消息
  • 如何捕获 cURL 输出到文件?

    我有一个文本文档 其中包含一堆以下格式的 URL URL sitehere com 我想做的是跑curl K myfile txt 并将 cURL 返回的响应输出放入文件中 我怎样才能做到这一点 curl K myconfig txt o
  • iOS 如何以编程方式检测顶视图控制器何时弹出?

    假设我有一个带有 2 个视图控制器的导航控制器堆栈 VC2 位于顶部 VC1 位于底部 我可以在 VC1 中包含一些代码来检测 VC2 刚刚从堆栈中弹出吗 由于我试图从 VC1 的代码中检测 VC2 的弹出 似乎类似视图将出现 or 查看是
  • 模拟器:在 ubuntu 上找不到 ram.img

    我只是在 Android Studio 3 5 的默认模拟器中设置了带有 API 27 的 Nexus 5x 设备 当我尝试启动设备时 设备在出现第一个 Google 标志后就关闭了 事件日志有以下输出 Emulator statvfs h
  • “无法确定临时目录,请手动指定cache_dir”

    Magento 管理员抛出异常 无法确定临时目录 请手动指定cache dir 这是新的托管包上的全新安装 通常它会发生在共享虚拟主机中 但有时也会发生在个人服务器上 如果 tmp 文件夹的权限设置错误 很多人建议修改该文件 lib Zen
  • 如何为列中的每个唯一值创建新的工作簿?

    我需要为 J 列中的每个唯一值运行 foreach 语句 对于每个唯一名称 我想创建一个新的 Excel 工作簿 复制特定名称的所有行 最后使用相同的唯一值保存工作簿 Sub test Range A1 J17 Select Selecti
  • 无法运行钩子/更新后:没有这样的文件或目录

    谢谢这个http danbarber me using git for deployment http danbarber me using git for deployment 很棒的文章 我设法在 git 控制下拥有一个远程服务器 不幸
  • 如何从 VSTS 下载所有附件?

    我正在尝试根据 ID 号将所有工作项附件从 VSTS 下载到它们自己的文件夹中 如果这是可能的 人们将如何继续实现这一目标 我研究过 REST API 但很困惑 而且我找到的所有文档似乎都是关于 Azure DevOps 的 我目前使用的版
  • 如何从 WMI 获取方法

    tl dr我应该怎么SELECT代替 为了获得方法 更多信息 这是一个例子 using var s new ManagementObjectSearcher root CIMV2 SELECT FROM someClass foreach
  • 如何在Python中使用open函数创建文件?

    在Linux环境中 我想创建一个文件并向其中写入文本 HTMLFILE MYUSER OUTPUT myfolder mytext html f open HTMLFILE w IOError Errno 2 No such file or
  • 如何求矩阵的对角线元素?

    我编写了一个函数来将矩阵的对角线元素存储到向量中 但输出并不如我预期 代码是 diagonal lt function x for i in nrow x for j in ncol x if i j a lt x i j print a
  • pandas 枢轴更改 dtype

    使用 pandas hub table 创建新数据框后 数据类型从 int32 更改为 float 原始数据框 df pd DataFrame from dict my dict orient columns dtype i4 print
  • 当 WooCommerce 中所选变体缺货时显示表单

    在 WooCommerce 中联系表格 7 插件 https wordpress org plugins contact form 7 我使用以下代码在单个产品页面上向我的缺货简单产品添加了一个表单 add action woocommer
  • Java多重继承

    为了完全理解如何解决 Java 的多重继承问题 我有一个需要澄清的经典问题 假设我有课Animal这有子类Bird and Horse我需要上课Pegasus延伸自Bird and Horse since Pegasus既是鸟又是马 我认为
  • 将应用程序从 iPhone 5 设备转换为 iPhone 4 设备

    如何使ios应用程序与iphone4设备 即3 5英寸 兼容 它已经内置在iphone 5 4 0英寸屏幕 中 而无需创建不同的xib 使用自动布局允许您的应用程序正确调整大小到正确的屏幕尺寸 Raywenderlich com 有一个很好
  • 使用 xml 和可重用的 xslt 动态生成 HTML 表单

    我有大量的 xml 文件 First
  • 支持哪些 git url 格式?

    Git 接受许多不同的 url 格式 例如 ssh http https 等 是否有任何规范 官方文档可以在其中找到受支持的 git url 格式 我写了一个git url 解析器 https github com IonicaBizau
  • 在 R 和 RStudio 中读取 URL

    当我在 RStudio 中输入以下内容时 它工作正常 nyt1 lt read csv url http stat columbia edu rachel datasets nyt1 csv 但是当我在 R 控制台中输入相同的内容时 我收到
  • 如何在 C 中使用和不使用 sprintf 将十六进制转换为 Ascii?

    I used strtol要将字符串转换为十六进制 现在我需要将其打印到屏幕上 我不确定是否可以使用sprintf因为我在这块板上只有 20k 内存可以使用 欢迎替代方案 要手动执行此操作 最简单的方法是使用一个将 nybbles 映射到