You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)输出78
  • BIN:二进制,例:Serial.print(78, BIN)输出1001110
  • OCT:八进制,例:Serial.print(78, OCT)输出116
  • HEX:十六进制,例: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:37:17