首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cmd中显示十六进制

在cmd中显示十六进制
EN

Stack Overflow用户
提问于 2015-07-10 08:31:14
回答 1查看 478关注 0票数 0

我的批处理文件有点问题

代码语言:javascript
复制
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

set LOOKUP=0123456789abcdef &set HEXSTR= 

set MAC_B1=03
set MAC_B2=5D
set MAC_B3=00
set MAC_B4=00
set MAC_B5=00
set MAC_B6=00
set my_file=runningno.txt

set runningno=128

setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set LOOKUP=0123456789abcdef &set /a HEXSTR= 

set /a A=%runningno%

:loop
set /a B=!A! %% 16 & set /a A=!A! / 16
set HEXSTR=!LOOKUP:~%B%,1!%HEXSTR%
if %A% GTR 0 goto :loop
if %runningno% LEQ 255 (
set /a MAC_B6 = %HEXSTR%
)

ECHO MAC address:%MAC_B1%-%MAC_B2%-%MAC_B3%-%MAC_B4%-%MAC_B5%-%MAC_B6%

如果我在没有"abcdef“的情况下以十六进制运行,输出就会很好。

代码语言:javascript
复制
03-5D-00-00-00-80

在另一种情况下,即设置为runningno=255,输出应该是03-5D-00-00-00-FF,但是是

代码语言:javascript
复制
03-5D-00-00-00-0

请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-10 08:57:17

代码语言:javascript
复制
@echo off
    setlocal enableextensions enabledelayedexpansion

    set "mac_b1=03"
    set "mac_b2=5d"
    set "mac_b3=00"
    set "mac_b4=00"
    set "mac_b5=00"
    set "mac_b6=00"

    set "runningno=128"

    set "lookup=0123456789abcdef"
    set /a "high=(runningno & 255) >> 4", "low=runningno & 15"
    set "mac_b6=!lookup:~%high%,1!!lookup:~%low%,1!"

    echo %mac_b1%-%mac_b2%-%mac_b3%-%mac_b4%-%mac_b5%-%mac_b6%

编辑的看起来runningno中的值会增加,

代码语言:javascript
复制
@echo off
    setlocal enableextensions enabledelayedexpansion

    set "mac_b1=03"
    set "mac_b2=5d"
    set "mac_b3=00"
    set "mac_b4=00"
    set "mac_b5=00"
    set "mac_b6=00"

    set "runningno=1458796"

    set "lookup=0123456789abcdef"

    set "value=%runningno%"
    for /l %%a in (6, -1, 3) do (
        set /a "high=(value & 255) >> 4", "low=value & 15", "value>>=8"
        for %%H in (!high!) do for %%L in (!low!) do (
            set "mac_b%%a=!lookup:~%%H,1!!lookup:~%%L,1!"
        )
    )

    echo %mac_b1%-%mac_b2%-%mac_b3%-%mac_b4%-%mac_b5%-%mac_b6%

但这有个问题。批处理文件中的算术限制在32位有符号整数。这意味着可以用此方法处理的更高的值是0x7fffff

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31336017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档