Arduino中BIN用于random()函数的文档查询及技术术语咨询
Arduino中BIN等格式常量的说明
核心结论
你用到的BIN是Arduino核心库定义的数值格式枚举常量,原本是为Print类函数(如Serial.print)设计的进制输出指定符,并非random()函数的合法参数——你的代码能生成二进制随机数只是巧合:BIN的实际定义值是2,random(BIN)等价于random(2),自然生成0或1。
标准术语
这类常量官方称为Print Format Specifiers(数值格式指定符),本质是预定义的整数宏,在Arduino的Print.h头文件中定义。
设计用途与正确使用场景
这些常量的核心作用是告诉Print类函数(包括串口、I2C通信、SD卡文件打印等支持Print接口的对象)以何种进制格式输出数值:
DEC:十进制(默认格式,省略参数时自动使用),例:Serial.print(78, DEC)输出78BIN:二进制,例:Serial.print(78, BIN)输出1001110OCT:八进制,例:Serial.print(78, OCT)输出116HEX:十六进制,例:Serial.print(78, HEX)输出4E
关于random(BIN)的特殊情况
random()函数的参数规则是:
random(max):生成0到max-1之间的随机整数random(min, max):生成min到max-1之间的随机整数
因为BIN被定义为2,所以random(BIN)刚好符合random(max)的参数要求,生成0或1。但这属于未被官方设计的用法,虽然当前版本能运行,但如果未来Arduino核心库修改BIN的定义值(可能性极低,但并非完全不可能),代码会失效。更规范的写法是直接使用random(2)。
同类格式选项汇总
Arduino核心库提供的同类格式常量包括:
DEC:十进制输出BIN:二进制输出OCT:八进制输出HEX:十六进制输出
另外,部分Print类实现还支持额外的格式控制(比如十六进制小写输出),但这属于扩展功能,并非所有Print接口对象都支持。
内容的提问来源于stack exchange,提问作者bento
相关产品推荐
相关产品推荐

