为什么printf("%.2x",ubp_resp[printcount]);只能打印数组高四位?
时间: 2024-04-06 07:31:45 浏览: 87
RFduinoUBP:RFduino 的无野心二进制协议
这是因为在C语言中,%.2x是用来以16进制形式输出无符号整数的格式控制符。其中%.2表示至少输出2位数字,不足2位则前面补零。x表示以16进制形式输出,输出的范围是0-9,a-f。
而在printf("%.2x",ubp_resp[printcount])中,ubp_resp[printcount]是一个无符号整数类型的数组元素,其值必然在0-255之间,用%.2x格式控制符输出时,输出的是该数的低8位(即低4位的后两位),因为在16进制数中,每个数字占4位,所以输出的结果只能是该数的低4位的后两位。如果想输出完整的8位,可以将格式控制符修改为%.2x%.2x,分别输出高4位和低4位。
阅读全文