血液酒精含量计算器

按 Widmark 公式,用每份酒的体积、酒精度、份数、体重、性别和饮酒后经过的时间,估算血液酒精含量(BAC),并换算成 mg/100mL 与 GB 19522 的两个临界值对照。

仅供参考,不构成法律或医学依据。这里只是一个按公式展开的科普估算:真实 BAC 受空腹与否、肝功能、遗传、服药、体温和测量时点影响,误差可以很大。判定是否饮酒驾车、醉酒驾车,唯一依据是执法机关的呼气或血液检测结果。请勿用本页结果代替检测,更不要据此决定是否开车。
纯酒精总量31.56 g
峰值 BAC(未代谢)66.3 mg/100mL
当前 BAC36.3 mg/100mL
GB 19522 判定饮酒驾车
降至 20 mg/100mL 还需1.1 小时
常见酒类规格酒精度 %vol纯酒精 g折合标准杯(14 g)峰值 BAC(70 kg 男)
普通瓶装啤酒500 mL4.015.781.1333.2
普通罐装啤酒330 mL4.010.410.7421.9
大瓶啤酒640 mL4.020.201.4442.4
扎啤 / 生啤500 mL3.614.201.0129.8
精酿 IPA330 mL6.516.921.2135.6
无醇啤酒500 mL0.51.970.144.1
干红葡萄酒150 mL12.514.791.0631.1
干白葡萄酒150 mL12.014.201.0129.8
起泡酒 / 香槟150 mL12.014.201.0129.8
甜型葡萄酒100 mL12.09.470.6819.9
黄酒(花雕)100 mL15.011.840.8524.9
清酒180 mL15.021.301.5244.8

表头「峰值 BAC」按 70 kg 男性、r = 0.68、喝完后未代谢的峰值估算,单位 mg/100mL;「标准杯」按 14 g 纯酒精折算。表格首屏 12 行,点「加载更多」补全 25 行。

使用方法

  1. 血液酒精含量计算器按「一份酒」来折算,先在「酒类预设」里选一种常见的酒,体积和酒精度会自动填好;喝的不是预设里的酒,就选「自定义」,再自己填每份体积和酒精度。
  2. 「每份体积」填毫升数,允许 10~2000;「酒精度」按瓶标上的 %vol 填,允许 0.1~96。
  3. 「饮用份数」填喝了几份。这里的「一份」= 上面那个体积,两瓶 500 mL 啤酒就填 2,半瓶就填 0.5;允许 1~50 份。
  4. 填体重(30~200 千克)并选择生理性别——这决定 Widmark 系数 r:男 0.68、女 0.55。
  5. 填「距喝下第一口的时间」,「0」表示刚喝完。允许 0~144 小时,隔夜酒就填十几小时。
  6. 点「估算血液酒精含量」(或在任意输入框里直接按 Enter),结果卡会立刻刷新。页面打开时已经预置了一组示例:500 mL 装 4%vol 啤酒 2 瓶、70 kg 男性、距第一口 2 小时,对应 36.3 mg/100mL。

这个血液酒精含量计算器能解决什么

一是把「喝了多少」翻译成「血液里大约多少」。啤酒、葡萄酒、白酒、威士忌的酒精度差十倍以上,凭「就喝了两杯」根本无法比较。本页把体积、酒精度、密度三个量乘起来得到纯酒精克数,再按体重和性别折算成浓度,同一套口径下不同酒类可以直接比。

二是看清体重与性别的放大效应。同样两瓶 500 mL 啤酒,70 kg 男性峰值 66.3 mg/100mL,50 kg 女性峰值 114.8 mg/100mL,差 1.73 倍——已经跨过醉酒驾车的 80 mg/100mL 线。这个差距不是「酒量」问题,而是体液总量与酒精分布容积的物理差异。

三是估算代谢所需时间。结果区会给出「降到 20 mg/100mL 以下还需多少小时」,比笼统的「睡一觉就好了」具体得多。默认示例里 2 瓶啤酒需要自第一口起约 3.1 小时才降到 20 mg/100mL 以下,也就是说 2 小时后还剩约 1.1 小时。

四是核对普法口径里的数字。执法普法常说「一罐 330 mL 啤酒或半两 50 度白酒就够 20 mg/100mL」。用本页反算:330 mL×4%vol 在 70 kg 男性身上是 21.9 mg/100mL,半两 50 度在 70 kg 男性身上是 20.7 mg/100mL,与官方口径吻合,可以拿来自查公式有没有用错。

本页不做这些事:不给「能不能开车」的结论、不预测个人实际代谢曲线、不处理空腹与餐后吸收速度的差别、不替代呼气式酒精检测仪。这些判断只能由执法检测与医疗检查给出。

估算原理:Widmark 公式、5.14 与三个系数

这个血液酒精含量计算器的核心只有一行公式,就是经典的 Widmark 公式:BAC% = (A × 5.14) / (W × r) − 0.015 × t。其中 A 是摄入的纯酒精量,W 是体重,r 是酒精分布系数,t 是距第一口酒经过的小时数。

5.14 不是一个随手取的魔数。它来自英美单位制:当 A 用「盎司纯酒精」、W 用「磅」时,1 液体盎司 = 29.5735 mL,乙醇 20 ℃ 密度 0.789 g/mL,二者相乘得 23.3335 g;1 磅 = 453.59237 g;于是把克换算成百分比要乘的系数就是 23.3335 × 100 ÷ 453.59237 = 5.1442,取两位即 5.14。本页为了和中文用户熟悉的毫升、千克、克对齐,实际用的是同一公式的 SI 写法 BAC% = A / (10 × W × r) − 0.015 × t,A 用克、W 用千克。两种写法的等价性已经逐点验证:在 5~80 g 酒精、45~110 kg 体重、两个 r 值的网格上,最大偏差只有 2.61×10⁻⁴ 个百分点。

输入怎么变成 A。酒精度 %vol 表示 20 ℃ 下乙醇体积占比,所以纯酒精质量 = 体积(mL) × 酒精度 ÷ 100 × 0.789。500 mL 装 4%vol 啤酒一瓶就是 500 × 0.04 × 0.789 = 15.78 g,两瓶就是 31.56 g。这个 0.789 就是乙醇密度,不能用水的 1.0 代替——用错会凭空多算 26.7% 的酒精。

r 取 0.68 和 0.55 的来历。r 是酒精分布容积与体重的比值,本质是「体内水分占体重的比例」的近似值:乙醇是亲水的,进入体内后只分布在体液中,脂肪几乎不参与。成年男性体脂率较低、体液比例约 68%,女性约 55%,这就是两个取值的依据。它也是本页结果对个体差异最敏感的参数——同一个 70 kg 的人,把 r 从 0.68 换成 0.55,峰值浓度直接变成 1.2364 倍。

−0.015 × t 是代谢项,不是衰减系数。0.015 的单位是「% BAC 每小时」,等价于 15 mg/100mL 每小时,代表肝脏平均每小时能清除的酒精量。它随 t 线性增长,因此 Widmark 给出的是一条直线下降的曲线,而不是先快后慢;一旦 t 超过峰值除以 0.015 的时刻,公式会算出负值,本页统一夹到 0,避免出现「负酒精」这种荒谬结果。

两个阈值来自国标。国标 GB 19522《车辆驾驶人员血液、呼气酒精含量阈值与检验》规定:血液酒精含量 ≥20 mg/100mL 且 <80 mg/100mL 属饮酒后驾车,≥80 mg/100mL 属醉酒驾车(2010 版与 2024 版沿用的临界值相同)。把公式输出的百分比乘以 1000 就是 mg/100mL,例如 0.0363% 即 36.3 mg/100mL。另一条可以参考的量是《中国居民膳食指南(2022)》的建议:成年人如饮酒,一天饮用的酒精量不超过 15 g,约等于啤酒 450 mL 或 38 度白酒 50 mL。

完整示例(数字由复算脚本得出)

示例条件与页面打开时的默认值完全一致:普通瓶装啤酒 500 mL、4.0%vol、2 瓶、70 kg 男性、距第一口 2 小时。

把体重这一项换掉,结论会差很多。同一批酒(2 瓶 500 mL、4.0%vol)在不同体重下的峰值:

体重男性峰值(r=0.68)女性峰值(r=0.55)是否越过 80 mg/100mL 醉酒线
45 kg103.1 mg/100mL127.5 mg/100mL男女均越过
50 kg92.8 mg/100mL114.8 mg/100mL男女均越过
60 kg77.4 mg/100mL95.6 mg/100mL女性越过,男性未越
70 kg(默认)66.3 mg/100mL82.0 mg/100mL女性刚好越过
80 kg58.0 mg/100mL71.7 mg/100mL均未越过
90 kg51.6 mg/100mL63.8 mg/100mL均未越过

常见酒类的酒精克数与输入范围

页面上那张 25 行的对照表就是按上面的公式逐行算出来的,它同时回答了「这杯酒有多少克酒精」和「一杯下去峰值大约多少」。挑几行看得更清楚:

酒类规格纯酒精 g折合 15 g 建议量的几倍说明
普通罐装啤酒330 mL / 4.0%vol10.410.69 倍一罐刚好低于一天 15 g 的建议上限
普通瓶装啤酒500 mL / 4.0%vol15.781.05 倍一瓶就略超建议上限
干红葡萄酒150 mL / 12.5%vol14.790.99 倍与指南给出的 150 mL 葡萄酒口径一致
高度白酒50 mL / 52%vol20.511.37 倍一两 52 度,酒精量已超过一天上限
低度白酒50 mL / 38%vol14.991.00 倍指南「38 度白酒 50 mL」原文即约 15 g
韩国烧酒360 mL / 17.0%vol48.293.22 倍一瓶烧酒相当于 3 天以上的建议量

输入范围就是控件的硬边界,超出会直接给出具体提示而不是悄悄算出一个错数:

字段允许范围越界时页面的说法
每份体积10~2000 mL提示填写范围,并说明一听 330、一瓶 500、一扎 1000 都合法
酒精度0.1~96 %vol0 会被拒绝(无醇饮品也含微量酒精),96 是常见蒸馏酒上限
饮用份数1~50 份支持 0.5 这类小数,半瓶啤酒填 0.5
体重30~200 kg体重填 0 会让公式除以 0 得到无穷大,必须先拦下
距第一口时间0~144 小时允许 0,允许隔夜;负数无意义

结果边界、舍入与免责说明

常见问题

为什么公式里要乘 0.789,直接用体积不行吗?

因为 %vol 是体积百分比,而 Widmark 公式里的 A 是纯酒精质量。要跨过体积和质量,必须乘乙醇在 20 ℃ 下的密度 0.789 g/mL。若偷懒按 1.0 算(把酒精当水),500 mL 装 4%vol 啤酒会被算成 20 g 而不是 15.78 g,整条结果的偏差达 26.7%。

0.68 和 0.55 这两个数能换成更准的吗?

Widmark 原始取值就是这两个整数,后来的研究(如 Watson 体液公式、Seidl 公式)会更细地考虑年龄、身高、体重,但需要用到的输入项本页并不采集,而且它们也只是把 ±20% 的误差压到 ±10% 左右。本页刻意保留经典取值,是为了让公式可核对、可复算。

代谢率为什么是 0.015%/h 而不是别的数?

0.015% BAC 每小时等于 15 mg/100mL 每小时,是「肝脏每小时约清除 7~10 g 乙醇」这一生理事实换算到常见体重区间后的常用均值。它在公式里以减法项出现,因此「喝了多少克」和「等了多久」是同一量纲下的对冲关系,这也正是很多国家用「标准杯/小时」来提示风险的依据。

两瓶啤酒 2 小时后还有 36.3 mg/100mL,为什么感觉没那么醉?

主观感受与血液浓度不同步。酒精对认知与反应速度的影响在低浓度时就已经存在,而人对自身状态的判断能力本身也被酒精削弱,所以「感觉清醒」不能作为证据。国标把 20 mg/100mL 定为饮酒驾车线,依据正是这个浓度区间的操作能力已经下降。

同样是 70 kg,为什么女性要选 0.55?

因为决定酒精浓度的不是体重而是体液总量。同样体重下,女性体脂比例通常更高、体液占比更低,酒精被「稀释」的空间更小。计算上就体现为 r 从 0.68 降到 0.55,分母缩小,浓度按 0.68 ÷ 0.55 = 1.2364 倍放大。示例中 70 kg 女性峰值 82.0 mg/100mL 已越过 80 的醉酒线,男性 66.3 尚未越过。

为什么表格里的「峰值 BAC」不直接等于结果区显示的当前 BAC?

两者是两个时点。峰值是假设全部酒精一次性入血、尚未代谢时的上界,用 t = 0 得到;当前值是峰值减去 0.015 × t 之后的浓度。表格固定按 t = 0 计算,方便比较不同酒类的「一口下去能顶多高」;结果区则按你填的经过时间做减法。把经过时间填 0,两者的数字就会重合。

喝啤酒和喝白酒,只要酒精克数一样结果就一样吗?

在本页的公式口径下是的,公式只认纯酒精克数,这也是 Widmark 模型的假设。真实情况会有差别:高度酒在空腹时入血更快、峰值更高,含二氧化碳的饮品可能加速胃排空,而先吃东西能明显压低峰值。所以用「克数相同就等价」来安排饮酒同样是不可靠的。

隔夜酒为什么第二天还测得出?

因为清除是按时间线性累加的。默认示例的 31.56 g 酒精需要约 4.42 小时才回到 0,如果喝得更多、体重更轻,时间会更长。睡前喝到 100 mg/100mL 量级,8 小时也只降 120 mg/100mL 对应的清除量,实测仍可能落在 20 mg/100mL 以上。把「睡了多久」等同于「代谢完了」是这个工具想纠正的最常见误用。

相关工具