C语言实现进制转换函数的实例详解
发布时间:2020-12-25 02:28:17 所属栏目:经验 来源:网络整理
导读:C语言实现进制转换函数的实例详解 前言: 写一个二进制,八进制,十六进制转换为十进制的函数 要求: 函数有两个参数,参数(1)是要转换为十进制的进制数,参数(2)是标示参数(1)是什么进制(2,8,16标示二进制,八进制,十六进制)。 要有报错信息,比如参数是10
|
其中用到了text_to_cstring(arg1),类型转换的相关函数定义在 src/backend/utils/adt/varlena.c
/*
* text_to_cstring
*
* Create a palloc'd,null-terminated C string from a text value.
*
* We support being passed a compressed or toasted text value.
* This is a bit bogus since such values shouldn't really be referred to as
* "text *",but it seems useful for robustness. If we didn't handle that
* case here,we'd need another routine that did,anyway.
*/
char *
text_to_cstring(const text *t)
{
/* must cast away the const,unfortunately */
text *tunpacked = pg_detoast_datum_packed((struct varlena *) t);
int len = VARSIZE_ANY_EXHDR(tunpacked);
char *result;
result = (char *) palloc(len + 1);
memcpy(result,VARDATA_ANY(tunpacked),len);
result[len] = ' ';
if (tunpacked != t)
pfree(tunpacked);
return result;
}
结果:
postgres=# select x_to_dec('111',2);
x_to_dec
----------
7
(1 row)
postgres=# select x_to_dec('aA',16);
x_to_dec
----------
170
(1 row)
postgres=# select x_to_dec('aA',1);
ERROR: Out of range! The second parameter,16.
以上就是进制转换的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! (编辑:三门峡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 三星Galaxy S21配备高通Snapdragon 888处理器
- 微软面向Windows 10 Mobile用户推送了14393.1358版本
- 互联网免费习惯正在被淡化 拥抱知识付费领域成为一种必然
- DDG僵尸网络频繁更新攻击Linux系统,腾讯安全护航企业安全
- iPhone 12 mini部分用户报告:锁定屏幕无响应
- 盛邦安全联合产业链合作伙伴发布重量级报告,率先定义网络空
- 外媒一加5抄袭iphone 7 一加官方这样回答
- IDC:2019到2023年亚太地区将占全球智慧城市支出的1/3
- Gartner:阿里云稳居2019年云计算市场全球第三、亚太第一
- 富士康收购东芝闪存业务股份 已获得苹果和亚马逊的财力支持


