在汇编中将 bin 转换为 hex

2023-12-05

我是初学者,需要将 16 位二进制数转换为十六进制数的帮助。我已经完成了大部分代码,但我需要一些帮助。

  1. 如何让它只接受0和1输入,而忽略其余的数字和字母?
  2. 转换过程后,我得到了错误的十六进制数字。我做错了什么?

输入示例:

1010101111001101

预期输出:

ABCD

电流输出:

AAAC

这是我的代码:

.MODEL SMALL
.STACK 1000h

.DATA
  title db 'Convert BIN to HEX:.',13,10,'$'
  HEX_Map   DB  '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
  HEX_Out   DB  "00", 13, 10, '$'   ; string with line feed and '$'-terminator

.CODE

main PROC
    mov ax, @DATA                   ; Initialize DS
    mov ds, ax

    mov ah, 0                                
    mov al, 3                ;clearing                                                 
    int 10h                                                                  

    mov ah, 9                                                                 
    lea dx, title                                                          
    int 21h     ;displays title

    mov dx, 0

loop16:                                                                   
    mov cx, 16  ;loop goes 16 Times because I need 16 bit binary input
    mov bx, 0 

;here I'm checking if input numer is 0 or 1, but it doesn't work as I want      
read:                                                                       
    mov ah, 10h                                                                 
    int 16h                          

    cmp al, '0'                                                                 
    jb read                                                                         

    cmp al, '1'                                                               
    ja read10   



read10:                                                                       
    mov ah, 0eh                                                                 
    int 10h                                                                     
    sub al, 48  ;conversion, sub 48 from ascii since 0 is on 48th place in ascii, but I'm not sure if this part is must to be or not                    

    jmp end_loop 

end_loop:                                                                 
    mov ah, 0       ;ah=0 so we can add ax to bx        
    add bx, ax              

    loop read           
    push bx                         ;here I push bx on stack, bx is as my input number                                          

    mov al, 13
    mov ah, 0eh
    int 10h

    mov al, 10
    mov ah, 0eh
    int 10h 



    mov di, OFFSET HEX_Out          ; First argument: pointer
    pop bx                          ;Here I take input number from stack
    mov ax, bx
    call IntegerToHexFromMap        ; Call with arguments
    mov ah, 09h                     ; Int 21h / 09h: Write string to STDOUT
    mov dx, OFFSET HEX_Out          ; Pointer to '$'-terminated string
    int 21h                         ; Call MS-DOS

    mov ah, 10h                                                                 
    int 16h 

    mov ax, 4C00h                   ; Int 21h / 4Ch: Terminate program (Exit code = 00h)
    int 21h                         ; Call MS-DOS
main ENDP

IntegerToHexFromMap PROC
    mov si, OFFSET Hex_Map          ; Pointer to hex-character table

    mov bx, ax                      ; BX = argument AX
    and bx, 00FFh                   ; Clear BH (just to be on the safe side)
    shr bx, 1
    shr bx, 1
    shr bx, 1
    shr bx, 1                       ; Isolate high nibble (i.e. 4 bits)
    mov dl, [si+bx]                 ; Read hex-character from the table
    mov [di+0], dl                  ; Store character at the first place in the output string

    mov bx, ax                      ; BX = argument AX
    and bx, 00FFh                   ; Clear BH (just to be on the safe side)
    shr bx, 1
    shr bx, 1
    shr bx, 1
    shr bx, 1                       ; Isolate high nibble (i.e. 4 bits)
    mov dl, [si+bx]                 ; Read hex-character from the table
    mov [di+1], dl                  ; Store character at the first place in the output string

    mov bx, ax                      ; BX = argument AX
    and bx, 00FFh                   ; Clear BH (just to be on the safe side)
    shr bx, 1
    shr bx, 1
    shr bx, 1
    shr bx, 1                       ; Isolate high nibble (i.e. 4 bits)
    mov dl, [si+bx]                 ; Read hex-character from the table
    mov [di+2], dl                  ; Store character at the first place in the output string

    mov bx, ax                      ; BX = argument AX (just to be on the safe side)
    and bx, 00FFh                   ; Clear BH (just to be on the safe side)
    and bl, 0Fh                     ; Isolate low nibble (i.e. 4 bits)
    mov dl, [si+bx]                 ; Read hex-character from the table
    mov [di+3], dl                  ; Store character at the second place in the output string

    ret
IntegerToHexFromMap ENDP

IntegerToHexCalculated PROC
    mov si, OFFSET Hex_Map          ; Pointer to hex-character table

    mov bx, ax                      ; BX = argument AX
    shr bl, 1
    shr bl, 1
    shr bl, 1
    shr bl, 1                       ; Isolate high nibble (i.e. 4 bits)
    cmp bl, 10                      ; Hex 'A'-'F'?
    jl .1                           ; No: skip next line
    add bl, 7                       ; Yes: adjust number for ASCII conversion
    .1:
    add bl, 30h                     ; Convert to ASCII character
    mov [di+0], bl                  ; Store character at the first place in the output string

    mov bx, ax                      ; BX = argument AX
    shr bl, 1
    shr bl, 1
    shr bl, 1
    shr bl, 1                       ; Isolate high nibble (i.e. 4 bits)
    cmp bl, 10                      ; Hex 'A'-'F'?
    jl .2                           ; No: skip next line
    add bl, 7                       ; Yes: adjust number for ASCII conversion
    .2:
    add bl, 30h                     ; Convert to ASCII character
    mov [di+1], bl                  ; Store character at the first place in the output string

    mov bx, ax                      ; BX = argument AX
    shr bl, 1
    shr bl, 1
    shr bl, 1
    shr bl, 1                       ; Isolate high nibble (i.e. 4 bits)
    cmp bl, 10                      ; Hex 'A'-'F'?
    jl .3                           ; No: skip next line
    add bl, 7                       ; Yes: adjust number for ASCII conversion
    .3:
    add bl, 30h                     ; Convert to ASCII character
    mov [di+2], bl                  ; Store character at the first place in the output string

    mov bx, ax                      ; BX = argument AX (just to be on the safe side)
    and bl, 0Fh                     ; Isolate low nibble (i.e. 4 bits)
    cmp bl, 10                      ; Hex 'A'-'F'?
    jl .4                           ; No: skip next line
    add bl, 7                       ; Yes: adjust number for ASCII conversion
    .4:
    add bl, 30h                     ; Convert to ASCII character
    mov [di+3], bl                  ; Store character at the second place in the output string

    ret
IntegerToHexCalculated ENDP

END main                            ; End of assembly with entry-procedure

你不能使用int 10h (0e)当您将位收集到时用于 char 输出bx. That int调用需要bl设置为文本的前景色和bh指向文本页。

Also in bx您将计算的是个数,而不是输入的数字。在调试器(你的原始代码)中尝试一下,在后面放置断点loop并输入(盲目地,如果它没有显示)例如“1100110011001100”,bx将是 8 (如果有些人我可能是错的int调用销毁bx,我没有运行它,只是在我的脑海中运行)。

所以为了修复你的输入部分我会去int 21h, 2相反,用于显示字符,如下所示(还修复了结果的累积bx):

    ; read 16 bits from keyboard ('0'/'1' characters accepted only)
    mov cx, 16  ; loop goes 16 Times because I need 16 bit binary input
    xor bx, bx  ; result number (initialized to zero)

read:
    mov ah, 10h
    int 16h     ; read character from keyboard

    cmp al, '0'
    jb read     ; ASCII character below '0' -> re-read it

    cmp al, '1'
    ja read     ; ASCII character above '1' -> re-read it

    mov dl,al   ; keep ASCII for output in DL

    shr al,1    ; turn ASCII '0'(0x30)/'1'(0x31) into CF=0/1 (Carry Flag)
    rcl bx,1    ; enrol that CF into result from right (and shift previous bits up)

    mov ah,2    ; output character in DL on screen
    int 21h

    loop read   ; read 16 bits

我没有检查其余的代码,因为如果我检查的话,我会非常渴望完全重写它,所以暂时只保留输入部分。


调试器应该允许您每次单步执行一条指令(或者在任何行上放置断点,然后运行到该行为止)。

因此,您可以在每个步骤之后检查寄存器和内存中的值。

例如,如果您将断点放在前面add bx,ax在原始代码中,您应该能够在调试器中读取(在按下“1”键并且调试器在add) that:

ax为 1(根据按下的键),并且bx从 0 到“1”按键次数(在进一步的迭代中)。

在按下四次“1”键之后,您应该很明显,bx等于4 (0100以二进制表示)距离很远1111,因此有些东西不能按您想要的方式工作,您必须从“我想在那里写的内容”重新调整为“我真正写的内容”,再次阅读您的代码并了解需要更改哪些内容才能获得预期结果。

在您的情况下,例如添加指令shl bx,1在之前add将解决这种情况(将旧位“向上”移动一个位置,将最低有效位设置为零,即“准备好添加斧头”)。

继续努力尝试调试器的东西,如果不弄清楚调试器,在汇编中几乎不可能做任何事情。或者在这里继续问,看到什么,不明白什么。这对于汇编编程来说确实是绝对必要的。

其他选择就是在你的头脑中“模拟”CPU,并运行带有帮助注释的屏幕上的指令(我强烈建议纸质的,PC 不知何故不适合我)。这比使用调试器要困难和繁琐得多。可能需要数周/数月的时间才能开始“模拟”而不会出现太多错误,因此您通常会在第一次尝试时发现错误。从好的方面来说,这将使您深入了解 CPU 的工作原理。


关于第二部分(数字到十六进制字符串的转换)。

我将尽力帮助您理解您手头的内容,并从原始代码中找出一些错误来演示如何使用它。

所以你有 16 位数字,例如:

1010 1011 1100 1101  (unsigned decimal 43981)

我在每组 4 位之间放置了空格(很少称为“半字节”),因为有一个有趣的事实。每个半字节准确地形成单个十六进制数字。所以上面的数字是十六进制的:

A    B    C    D     (10, 11, 12, 13)

检查每个十六进制数字与上面 4 位的对应关系。

因此,您想要的是将原始 16b 值分解为四个 4 位数字,从最高有效位到最低有效位(b12-b15、b8-b11、b4-b7、b0-b3 => 16 位数字中的特定位:“b15 b14 b13 ... b2 b1 b0”)。

每个这样的数字的值为 0-15(因为它们是 4 位,并且使用所有可能的组合),因此您需要将其转换为 ASCII 字符'0'-'9'对于值 0-9,以及'A'-'F'对于值 10-15。

每个转换后的值都存储到内存缓冲区的下一个字节位置,因此最终它们形成字符串“ABCD”。

这听起来可能“显而易见”,但它是第 2 部分内部计算的完整描述,因此请确保您真正理解每个步骤,以便您可以随时对照此检查代码并搜索差异。


现在我将向您展示我在第二部分中看到的一些错误,并尝试将其与上面的“理论”联系起来。

首先是数据和结构:

HEX_Out   DB  "00", 13, 10, '$'

这编译为字节:'0', '0', 13, 10, '$' (or 30 30 0D 0A 24当以十六进制字节查看时)。

如果你写'A', 'B', 'C', 'D'超过它,你能发现问题吗?

您只为数字保留了两个字节(通过“00”),但您写入了四个字节,所以也13 and 10将被覆盖。


现在关于IntegerToHexFromMap,从代码看来你不明白什么and and shr确实(搜索位运算解释).

您为前三个字符提取相同的 b4-b7 位bx (copy of ax),然后对于第四个字母,您提取位 b0-b3。因此,这是您尝试将 8 位转换代码扩展到 16 位,但您没有提取正确的位。

我将尝试对它的第一部分进行广泛的评论,让您了解您做了什么。

; bx = 16 bit value, mark each bit as "a#" from a0 to a15
    and bx, 00FFh
; the original: a15 a14 a13 ...  a2  a1  a0  bits get
; AND-ed by:      0   0   0 ...   1   1   1
; resulting into bx = "a7 to a0 remains, rest is cleared to 0"
    shr bx, 1
; shifts bx to right by one bit, inserting 0 into top bit
; bx = 0 0 0 0  0 0 0 0  0 a7 a6 a5  a4 a3 a2 a1  (a0 is in CF)
    shr bx, 1
; shifts it further
; bx = 0 0 0 0  0 0 0 0  0 0 a7 a6  a5 a4 a3 a2  (a1 is in CF)
    shr bx, 1
; bx = 0 0 0 0  0 0 0 0  0 0 0 a7  a6 a5 a4 a3 (a2 ...)
    shr bx, 1
; bx = 0 0 0 0  0 0 0 0  0 0 0 0  a7 a6 a5 a4

; so if bx was value 0x1234 at the beginning, now bx = 0x0003

; conversion to ASCII and write is OK.

因此,您将位 b4-b7 作为第一个字符,但需要位 b12-b15。我希望你能完全理解这一点,我知道一开始你可能会感到困惑,哪一位是哪一位,为什么有时右边有一些东西,然后左边有一些东西。

Bits are usually named from least significant (value 20 = 1, so I call it "b0") to most significant (value 215 = 32768 in case of 16 bit number, I call it "b15").

但由于数字原因,位是从最高有效位到最低有效位(以二进制数形式)写入的,因此“左侧”的位以 b15 开头,“右侧”的位以 b0 结尾。

向右移动意味着移动b_i to b_(i-1),这实际上使其价值减半,所以shr value,1也可以被视为无符号除以二。

向左移动是从b_i to b_(i+1),有效地将值乘以二(指令shl and sal,两者都产生相同的结果,因为两者的 b0 都设置为零)。

sar是“算术”右移,保持最高有效位的值完整(符号位),所以对于-1(所有位均为1)它将再次产生-1,对于所有其他数字,它的工作原理是有符号除以二。

顺便说一句,从 80286 CPU 开始你就可以使用shr bx,4(也可以看作除以 16 = 2*2*2*2)。你真的被迫为 8086 编码吗?那么可能值得加载cl与 4 并做shr bx,cl,而不是四个shr bx,1。四行相同的台词让我很恼火。

另外,如果您已经了解了什么and是的,这对你来说一定看起来很荒谬:

    and bx, 00FFh  ; why not 0Fh already here???
    and bl, 0Fh

现在考虑一下如何提取第一个字符的位 b12-b15 以及如何修复您的问题IntegerToHexFromMap.


最后,我将向您展示如何重写它以使代码非常短,我的意思是源代码,但也包括二进制大小。 (为了性能,我会编写不同的代码,而不是针对 8086,但这个应该可以在 8086 上运行):

警告 - 尝试按照上述建议自行修复您的版本。只有当你有固定版本时,然后看看我的代码,作为 30 年前如何编写某些东西的新想法的灵感。另外,如果您正在做学校作业,请确保您可以说出有关的所有内容XLAT来自头部的指示,因为作为一名讲师,我会对任何使用此代码的学生高度怀疑,它是完整的历史,并且由于编译器不使用它,很明显代码是由人类编写的,并且可能是有经验的人。

IntegerToHexFromMap PROC
  ; ax = number to convert, di = string buffer to write to
  ; modifies: ax, bx, cx, dx, di

  ; copy of number to convert (AX will be used for calculation)
    mov dx, ax
  ; initialize other helpful values before loop
    mov bx, OFFSET HEX_Map  ; Pointer to hex-character table
    mov cx, 00404h          ; for rotation of bits and loop counter
      ; cl = 4, ch = 4  (!) Hexadecimal format allows me
      ; to position the two "4" easily in single 16b value.

FourDigitLoop: ; I will do every digit with same code, in a loop
  ; move next nibble (= hexa digit) in DX into b0-b3 position
    rol dx, cl
  ; copy DX b0-b3 into AL, clear other bits (AL = value 0-15)
    mov al, dl
    and al, 0Fh
  ; convert 0-15 in AL into ASCII char by special 8086 instruction
  ; designed to do exactly this task (ignored by C/C++ compilers :))
    xlat
  ; write it into string, and move string pointer to next char
    mov [di],al
    inc di
  ; loop trough 4 digits (16 bits)
    dec ch
    jnz FourDigitLoop

    ret
IntegerToHexFromMap ENDP

如果你只是使用这段代码而不理解它是如何工作的,上帝会杀死一只小猫......你不希望这样,对吧?

最后免责声明:我没有任何 16 位 x86 环境,所以我在没有测试的情况下编写了所有代码(我只是有时尝试编译它,但语法必须类似于 NASM,所以我不会为这个 MASM/ 这样做) TASM/emu8086 来源)。因此,可能存在一些语法错误(甚至可能是功能错误?:-O),如果您无法使其工作,请发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在汇编中将 bin 转换为 hex 的相关文章

  • x86-64 上这个语句有什么问题?

    该函数的目的是获取堆栈的起始地址 unsigned long find start void asm movq rsp eax 当我编译它时 出现错误 Error suffix or operands invalid for movq mo
  • 为什么 SSE 对齐读取 + 随机播放在某些 CPU 上比未对齐读取慢,而在其他 CPU 上则不然?

    在尝试优化有限差分代码所需的未对齐读取时 我更改了未对齐的负载 如下所示 m128 pm1 mm loadu ps H k 1 进入这个对齐的读取 随机播放代码 m128 p0 mm load ps H k m128 pm4 mm load
  • 为 Visual Studio 应用程序设置平台目标的目的是什么?

    对于任何 VS 项目 都可以在该项目的构建属性中设置平台目标 您可以将其设置为任何 CPU x86 x64 或 Itanium 我的问题是 如果我将此值设置为 x86 是否意味着我无法在 x64 计算机上运行该项目 如果是这样 为什么还要使
  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实
  • 汇编-符号标志和奇偶校验标志

    我不明白什么时候设置标志标志 什么时候设置奇偶校验 据我所知 符号标志表示运算结果的符号 0表示正数 1表示负数 那么为什么在下一个代码中 mov al 5 sub al 124 SF为零 结果是负数 关于PF 为什么a和b中设置了PF a
  • CALL指令是否总是将EIP指向的地址压入堆栈?

    x86架构中函数调用时是否存在返回地址不入栈的情况 No CALL根据定义 将在跳转到目标地址之前将返回地址压入堆栈 该返回地址是EIP or RIP sizeof call instruction 通常为 5 个字节 英特尔 64 和 I
  • 为什么 Solaris 汇编器生成的机器代码与 GNU 汇编器在这里不同?

    我为 amd64 编写了这个小汇编文件 对于这个问题来说 代码的作用并不重要 globl fib fib mov edi ecx xor eax eax jrcxz 1f lea 1 rax ebx 0 add rbx rax xchg r
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • 从汇编程序获取命令行参数

    通读 专业汇编语言书籍 似乎它提供了用于读取命令行参数的错误代码 我纠正了一点 现在它从段错误变成了读取参数计数 然后是段错误 这是完整的代码 data output1 asciz There are d params n output2
  • 在 x86-64 CPU 上通过交叉修改代码重现意外行为

    Question 对于可能在 x86 或 x86 x64 系统上触发意外行为的交叉修改代码有哪些想法 在这些系统中 交叉修改代码中的所有操作均已正确完成 但在执行处理器之前执行序列化指令除外修改代码 如下所述 我有一个 Core 2 Duo
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • 68HC11计算sin(x)的汇编代码

    68HC11 使用泰勒级数或查找表计算正弦值的汇编代码是什么 显示值只能是整数 查找表如何工作 在这种情况下 如何使用它来实现泰勒级数 http en wikipedia org wiki Taylor series 如果您正在寻找浮点解决
  • Intel 64 和 IA-32 上的 MESI 有何意义

    MESI 的要点是保留共享内存系统的概念 然而 对于存储缓冲区 事情就变得复杂了 一旦数据到达 MESI 实现的缓存 下游内存就会保持一致 然而 在此之前 每个核心可能对内存位置 X 中的内容存在分歧 具体取决于每个核心的本地存储缓冲区中的
  • 寄存器寻址模式与直接寻址模式

    我在试卷中遇到过这个问题 它指出 哪种给定的寻址模式更快 为什么 寄存器寻址方式 直接寻址方式 现在根据我的说法 寄存器寻址模式应该更快 因为寄存器是计算机中最快的存储位置 这是正确答案吗 请帮忙 谢谢 两种寻址模式之间的区别是 地址的来源
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • AVX-512CD(冲突检测)与原子变量访问有何不同?

    所以我在看他们展示了如何 void Histogram const float age int const hist const int n const float group width const int m const float o
  • 从 exe 文件中获取汇编级代码?

    我当时正在做linux汇编编程 在过去的几天里我已经转而学习windows汇编编程 我在用ml作为我的汇编器和golink作为我的链接器 我有我的汇编代码并已获得我的exe从中 现在我需要取回它的十六进制 xff xab x55等等 在li
  • 如何在 Debian 上编译 DOS 程序?

    在我的汇编语言课程中 我们使用 DPMI 编写 DOS 程序 不幸的是 我无法一直使用 32 位 Windows 机器 我在我使用的几乎每台计算机上都安装了 Debian 虚拟机 我已经安装了 DOSBox 和 DOSEMU 有什么办法可以
  • 使用 NEON 优化 Cortex-A8 颜色转换

    我目前正在执行颜色转换例程 以便从 YUY2 转换为 NV12 我有一个相当快的函数 但没有我预期的那么快 主要是由于缓存未命中 void convert hd uint8 t orig uint8 t result uint32 t wi
  • 程序集比较标志理解

    我正在努力理解汇编程序中的以下代码片段 if EAX gt 5 EBX 1 else EBX 2 在汇编程序中 可以写如下 根据我的书 模拟jge操作说明 https www felixcloutier com x86 jcc您通常会使用

随机推荐

  • 测试迭代指针之间的关系是否安全?

    请考虑一系列Thing 这是一种堆栈 它是由thingsBottom 其空端由thingsTop EDIT 每次我想将某些东西推入列表时 我都会这样做 thingsTop newThing thingsTop 我想使用指针从末尾到开头迭代它
  • 对尚未进行 OCR 处理的 PDF 进行批量 OCR 处理

    如果我有 10 000 个 PDF 其中一些已进行 OCRed 其中一些有 1 页已进行 OCRed 但其余页面尚未进行 我如何才能浏览所有 PDF 并且仅对尚未进行 OCRed 的页面进行 OCR完成了吗 这正是我想要的 我有数千个扫描的
  • 单元测试 VSTO 项目

    在我遵循的大多数单元测试教程中 它让我创建第二个单元测试项目 然后将测试项目中的解决方案 项目引用添加到另一个项目 我有一个 VSTO 插件 当我添加引用时 我没有看到 解决方案 gt 项目 下列出的任何内容 为什么是这样 我还能如何添加对
  • Swift UIAlertController 获取文本字段文本

    当按下 输入 按钮时 我需要从警报视图中的文本字段中获取文本 func inputMsg var points var outOf var alertController UIAlertController title Input View
  • 面板无法在使用 JQuery Mobile 的所有页面中工作

    大家好 朋友们 我是 jQuery Mobile 的新手 正在尝试通过使用 jquery mobile 创建网站来学习东西 问题是我用过data role panel 在我的页面上显示导航它工作正常 但是当我跳转到同一 HTML 文件中的另
  • 帮助从外部网站获取 Json 格式数据

    我正在尝试从该网站获取 Json 格式数据 http www livetraffic sg feeds json 但是 当我使用 ajax 时 我在 chrome 控制台中遇到了这个特殊错误 错误 XMLHttpRequest 无法加载 A
  • 如何在 Windows 中不输入 python 来运行 python 脚本

    假设我在某个目录中有一个名为 myfile py 的 python 文件 如何直接调用 python 文件而不调用 python myfile py and not python myfile py Edit 更准确地说 仅在命令行中输入文
  • 在函数中返回大对象

    比较以下两段代码 第一段使用对大对象的引用 第二段将大对象作为返回值 对 大对象 的强调是指 不必要地重复对象的副本会浪费周期 使用对大对象的引用 void getObjData LargeObj a a reset a fillWithD
  • 从下拉选择更新图表

    我有一个 JavaScript 文件app js和一个 php 文件data php app js使用 JSON 输出中的数据创建图表data php See app jsbelow document ready function ajax
  • 将事件转换为任务的可重用模式

    我想要一段通用的可重用代码将 EAP 模式包装为任务 类似于什么Task Factory FromAsync为BeginXXX EndXXXAPM模式 E g private async void Form1 Load object sen
  • 带有标志 FLAG_ACTIVITY_CLEAR_TOP 的活动 (android)

    我接连发起了一系列活动 但在其中一项活动中 我需要使用标志启动该特定活动FLAG ACTIVITY CLEAR TOP 这样它将完成前面的所有活动并开始 我面临的问题是 我不想完成堆栈中的一项活动 它应该存在于新启动的活动的后面 假设我有活
  • azure webapp webjob 节点版本

    如何定义用于运行 azure webjobs 的节点版本 服务器当前使用 v0 11 执行我的代码 但由于我使用需要节点 gt 8 的功能而失败 Web 应用程序本身在节点 8 上运行得很好 但 webjobs 的版本似乎独立于 Web 服
  • 机器精度和双精度型的最大值和最小值

    1 我遇到过几种将 epsilon 添加到非负变量以保证非零值的情况 所以我想知道为什么不加上数据类型可以表示的最小值而不是epsilon呢 这两者能解决什么不同的问题 2 我还注意到双精度类型的最大值的倒数大于其最小值 并且其最小值的倒数
  • 在 python 中以 JSON 形式返回 SQL 表

    我正在 web py 中玩一个小网络应用程序 并设置一个 url 来返回 JSON 对象 使用 python 将 SQL 表转换为 JSON 的最佳方法是什么 这是一个非常好的例子一种Python式的方法来做到这一点 import json
  • 如何处理在 Linq 表达式内部创建的 IDisposableobject?

    Linq 允许您在查询表达式内创建新对象 当您有封装列表生成的类时 这非常有用 我想知道你如何处理创建的需要它的对象 Example class Generator public IEnumerable
  • 使用光标分页和使用偏移量分页之间的成本差异是多少?

    当使用 下一页 和 上一页 按钮创建结果页面时 使用光标执行此操作与使用偏移执行此操作之间的成本差异是多少 每种技术的优缺点是什么 举个具体的例子 读取结果100 110的成本是多少 我见过一些声称 offset 使用 小型数据存储操作 的
  • 捕获键盘中断以阻止 Python 多处理工作线程在队列上工作

    从 stackoverflow 上找到的几篇文章中 我创建了这段代码 Scenario 我想要一个 multiprocessing queue 几个工人 听 如果发生键盘中断 主进程不应再将新项目放入队列中 并且在哨兵对象的帮助下 工作人员
  • .net core 3.1 Bearer error="invalid_token", error_description="受众‘空’无效”

    我有3个项目1 Angular SPA 2 Web API项目核心3 1 3 带有核心3 1的IdentityServer 但我收到以下错误 gt www authenticate Bearer error invalid token er
  • 如何通过带有 Bootstrap Dropdown 的 React Router 更改页面?

    我正在尝试使用引导下拉菜单更改 加载路由器 请帮助我执行此操作
  • 在汇编中将 bin 转换为 hex

    我是初学者 需要将 16 位二进制数转换为十六进制数的帮助 我已经完成了大部分代码 但我需要一些帮助 如何让它只接受0和1输入 而忽略其余的数字和字母 转换过程后 我得到了错误的十六进制数字 我做错了什么 输入示例 101010111100