gpt4 book ai didi

c - 如何将 int 的某些位复制到 char 缓冲区

转载 作者:行者123 更新时间:2023-11-30 17:30:03 24 4
gpt4 key购买 nike

我正在尝试将一些值从 uint32_t 复制到我的 uint8_t。

我有uint8_t tx_buff_id[3];

sprintf(tx_buff_id, "%X", rx_dataframe.id);// rx_dataframe.id is H'0000005b

我正在缓冲区 tx_buff_id[3] at [0] '5' [1] 'B' [2] '.'//这些 0x35 的十六进制等效值, 0x42,0x00

我想要在缓冲区中的是 tx_buff_id[3] at [0] '0' [1] '5' [2] 'B'//等价于这些 0x30 的十六进制,0x35,0x42

源仅发送这样的值,并且我对源没有任何影响,否则我可以接收相同格式的值。

最佳答案

如果您正在构建字符串,或者至少使用字符串格式化函数,请使用 char 目标变量,而不是 uint8_t。这不是“复制一些位”,而是将整数转换为字符串。

听起来你想要

char tmp[4];

sprintf(tmp, "0%X", rx_dataframe.id);

这将为您提供字符串“05b”,即它将在十六进制数字的两位数字之前添加您想要的字符'0'

tmp 数组的长度必须为 4,因为 sprintf() 将写入字符串终止符。您的代码不尊重这一点。不确定您声称看到的句号 ('.') 来自何处。

关于c - 如何将 int 的某些位复制到 char 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25325768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com