gpt4 book ai didi

将 char* 字符串转换为十六进制 uint16

转载 作者:行者123 更新时间:2023-11-30 21:47:54 26 4
gpt4 key购买 nike

我需要构建一个函数,我的输入是 char *string,我需要获得“相同的表示形式”,但采用 uint16。

例如:

input: "12"  -->  output: 0x0012
input: "0" --> output: 0x0000
input "123" --> output: 0x0123
input "1234" --> output: 0x1234

PD:我无法使用 strtol、sscanf 等“官方函数”...

最佳答案

这个怎么样?

#include <stdio.h>
#include <stdint.h>

unsigned int
trans(unsigned char c){
if ('0' <=c && c <= '9') return c - '0';
if ('A' <=c && c <= 'F') return c - 'A' + 0x0A;
if ('a' <=c && c <= 'f') return c - 'a' + 0x0A;
return 0;
}

uint16_t
hex_to_uint16(const char* s) {
uint16_t v = 0;
while (*s)
v = (v << 4) + trans(*s++);
return v;
}

#include <assert.h>

int
main(int argc, char* argv[]) {
assert(0x0012 == hex_to_uint16("12"));
assert(0x0000 == hex_to_uint16("0"));
assert(0x0123 == hex_to_uint16("123"));
assert(0x1234 == hex_to_uint16("1234"));
assert(0xffff == hex_to_uint16("ffff"));
return 0;
}

关于将 char* 字符串转换为十六进制 uint16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798265/

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