improve tk_atoi/tk_atol/tk_atoul support str start with #

This commit is contained in:
lixianjing 2022-07-13 18:47:39 +08:00
parent 5c96c30bce
commit 9bc2359767
3 changed files with 26 additions and 2 deletions

View File

@ -4,6 +4,7 @@
* 重构 widget\_add\_child
* 完善 pages 动态增加子控件。
* 完善API注释(感谢福明提供补丁)
* tk\_atoi/tk\_atol/tk\_atoul等函数视'#'开头的字符串为十六进制。
2022/07/12
* 对话框高亮增加参数update\_background(感谢雨欣提供补丁)

View File

@ -263,6 +263,8 @@ int32_t tk_atoi(const char* str) {
return_value_if_fail(str != NULL, 0);
if (IS_HEX_NUM(str)) {
return tk_strtoi(str + 2, NULL, 16);
}else if (str[0] == '#') {
return tk_strtoi(str + 1, NULL, 16);
} else if (IS_BIN_NUM(str)) {
return tk_strtoi(str + 2, NULL, 2);
} else {
@ -274,6 +276,8 @@ int64_t tk_atol(const char* str) {
return_value_if_fail(str != NULL, 0);
if (IS_HEX_NUM(str)) {
return tk_strtoll(str + 2, NULL, 16);
} else if (str[0] == '#') {
return tk_strtoll(str + 1, NULL, 16);
} else if (IS_BIN_NUM(str)) {
return tk_strtoll(str + 2, NULL, 2);
} else {
@ -285,6 +289,8 @@ uint64_t tk_atoul(const char* str) {
return_value_if_fail(str != NULL, 0);
if (IS_HEX_NUM(str)) {
return tk_strtoull(str + 2, NULL, 16);
} else if (str[0] == '#') {
return tk_strtoull(str + 1, NULL, 16);
} else if (IS_BIN_NUM(str)) {
return tk_strtoull(str + 2, NULL, 2);
} else {

View File

@ -16,8 +16,25 @@ TEST(Utils, basic) {
ASSERT_EQ(tk_atoi("0x1"), 0x1);
ASSERT_EQ(tk_atoi("0xf"), 0xf);
ASSERT_EQ(tk_atoi("0Xf"), 0xf);
ASSERT_EQ(tk_atoi("0b11"), 3);
ASSERT_EQ(tk_atoi("0B101"), 5);
ASSERT_EQ(tk_atoi("#f"), 0xf);
ASSERT_EQ(tk_atoi("#f3"), 0xf3);
ASSERT_EQ(tk_atoi("#f321"), 0xf321);
ASSERT_EQ(tk_atoi("#f321"), 0xf321);
ASSERT_EQ(tk_atoi("#13211234"), 0x13211234);
ASSERT_EQ(tk_atol("#f"), 0xf);
ASSERT_EQ(tk_atol("#f3"), 0xf3);
ASSERT_EQ(tk_atol("#f321"), 0xf321);
ASSERT_EQ(tk_atol("#f321"), 0xf321);
ASSERT_EQ(tk_atol("#13211234"), 0x13211234);
ASSERT_EQ(tk_atoul("#f"), 0xf);
ASSERT_EQ(tk_atoul("#f3"), 0xf3);
ASSERT_EQ(tk_atoul("#f321"), 0xf321);
ASSERT_EQ(tk_atoul("#f321"), 0xf321);
ASSERT_EQ(tk_atoul("#f3211234"), 0xf3211234);
ASSERT_EQ(tk_atol("0b11"), 3);
ASSERT_EQ(tk_atol("0B101"), 5);
ASSERT_EQ(tk_watoi(L"100"), 100);
ASSERT_EQ(tk_atof("100"), 100);
ASSERT_EQ(tk_atof("1e2"), 100);