实现了将ASCII字符串转换为对应的十六进制表示

142 篇文章 0 订阅
22 篇文章 0 订阅
实现了将ASCII字符串转换为对应的十六进制表示。该函数接受一个目标缓冲区指针hexBuf、一个源ASCII字符串缓冲区指针asciiStrBuf,以及要转换的十六进制数据长度hexDataLen作为参数。

函数内部使用一个循环来遍历每个十六进制数据的字节对,然后调用asciiToHex1函数将两个ASCII字符转换为一个十六进制字节,并存储在目标缓冲区中。

以下是使用该函数进行转换的示例:


#include <stdio.h>

unsigned char asciiToHex1(char byte) {
    unsigned char ret = 0;
    if ((byte >= '0') && (byte <= '9')) {
        ret = byte - '0';
    } else if ((byte >= 'A') && (byte <= 'F')) {
        ret = byte - 'A' + 0xA;
    } else if ((byte >= 'a') && (byte <= 'f')) {
        ret = byte - 'a' + 0xA;
    }
    return ret;
}

int convertAsciiStrToHex1(char* hexBuf, const char* asciiStrBuf, int hexDataLen) {
    int j = 0;
    for (int i = 0; i < hexDataLen; i++) {
        hexBuf[i] = asciiToHex1(asciiStrBuf[j]) << 4 | asciiToHex1(asciiStrBuf[j + 1]);
        j += 2;
    }
    return 0;
}

int main() {
    const char* asciiStr = "48656C6C6F20576F726C64"; // "Hello World"的ASCII码的十六进制表示
    int hexDataLen = 11; // 十六进制数据长度为11个字节(每个字符对应一个字节)
    char hexBuf[12]; // 目标缓冲区,需要保证足够大以容纳转换后的十六进制数据

    convertAsciiStrToHex1(hexBuf, asciiStr, hexDataLen);

    printf("转换结果:");
    for (int i = 0; i < hexDataLen; i++) {
        printf("%02X ", hexBuf[i]);
    }
    printf("\n");

    return 0;
}
在上述示例中,我们调用了convertAsciiStrToHex1函数,并传入一个ASCII字符串、要转换的十六进制数据长度和目标缓冲区。然后,我们使用printf函数将转换后的十六进制数据打印出来。

运行上述代码,输出结果为:

转换结果:48 65 6C 6C 6F 20 57 6F 72 6C 64 
这里的输出就是ASCII字符串"48656C6C6F20576F726C64"转换后的十六进制表示,与字符串"Hello World"的 ASCII 码对应的十六进制表示相匹配。请注意,在使用该函数时,需要确保目标缓冲区的大小足够大以容纳转换后的数据,并且输入的ASCII字符串长度和要转换的十六进制数据长度匹配。
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Respect@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值