c语言ascii码猴子怎么打,c/c++开发分享如何拆分ASCII字符的hex字节

本文介绍如何使用ASCII编码规则将半字节值转化为对应的字符,包括0-9的十进制表示和'A'-'F'或'a'-'f'的小写字母范围,并提供了多种函数和宏实现方式。还演示了如何将2个半字节转换为0终止的2字节字符串。
摘要由CSDN通过智能技术生成

使用AS

values 0... 9 <=> figures '0'...'9' <=> 0x30...0x39 in ASCII code; values 10...15 <=> figures 'A'...'F' <=> 0x41...0x46 in ASCII code; or 'a'...'f' <=> 0x61...0x66 in ASCII code;

有时小写字母用于’a’到’f’。

因此,如果我们的半字节的值低于10(0000b到1001b),则字符表示将为0x30 + n,或者在c语法中为“0”+ n。

如果n在10到15(1010b到1111b)0x41 + n – 10或’A’+ n-10之间。

使用unsigned int 8bit而不是char类型:

uint8_t nibble2char( uint8_t n ) { // make sure that ne {0x00,...,0x0F} if( n<10 ) return '0'+n; else return 'A'+n-10; }

或更短:

uint8_t nibble2char( uint8_t n ) { // make sure that ne {0x00,...,0x0F} return n<10 ? '0'+n : 'A'+n-10; }

或者作为一个宏(感谢(n)的chqrlie):

#define NIBBLE_TO_CHAR(n) ((n)<10 ? '0'+(n) : 'A'+(n)0) // n <= 15 !

如果使用小写字母,请将'A'替换​​为'a'。

将带有2个半字节的字节转换为2字节的0终止字符串,您可以使用:

void byte2str( uint8_t* s, uint8_t n ) { // s points to a string of at least 3 Bytes length ! uint8_t hi = ( n >> 4 ) & 0x0F ; uint8_t lo = n & 0x0F ; s[0] = NIBBLE_TO_CHAR( hi ); // high byte s[1] = NIBBLE_TO_CHAR( lo ); // low byte s[2] = 0; }

编辑:

通过将chqrlie校正到宏,函数变得更紧凑:

void byte2str( uint8_t* s, uint8_t n ) { // s points to a string of at least 3 Bytes length ! s[0] = NIBBLE_TO_CHAR( ( n >> 4 ) & 0x0F ); // high byte s[1] = NIBBLE_TO_CHAR( n & 0x0F ); // low byte s[2] = 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值