小编Joh*_*arr的帖子

如何在Ruby中验证字符串是否是正确的十六进制值?

我正在用Ruby编写6502汇编程序.我正在寻找一种以字符串形式验证十六进制操作数的方法.我知道String对象提供了一个"十六进制"方法来返回一个数字,但这是我遇到的一个问题:

  "0A".hex #=> 10 - a valid hexadecimal value
  "0Z".hex #=>  0 - invalid, produces a zero
"asfd".hex #=> 10 - Why 10?  I guess it reads 'a' first and stops at 's'?
Run Code Online (Sandbox Code Playgroud)

输入一堆胡言乱语,你会得到一些奇怪的结果.我需要的是首先验证该值是否为合法的十六进制字符串的方法.

我正在玩正则表达式,并意识到我可以这样做:

true if "0A" =~ /[A-Fa-f0-9]/
#=> true

true if "0Z" =~ /[A-Fa-f0-9]/
#=> true <-- PROBLEM
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题.我需要能够验证字母只是AF,如果它只是数字也可以.

我希望避免意大利面条代码,充斥着"如果"的陈述.我希望有人可以提供"单行"或某种形式的elegent代码.

谢谢!

ruby regex hex

6
推荐指数
1
解决办法
676
查看次数

如何在 HTML 元素中存储对象引用?

我正在使用从 JSON 文件导入的 javascript 对象构建 HTML 表单。我使用递归算法来构建 HTML 表,以及相应的元素(标签、文本框等)。这些字段加载了当前节点的值。

这个想法是编辑文本框中的值;这又会更新 javascript 对象。进行更改后,编辑器会将 JSON 对象发送到服务器并更新文件。

令人费解的问题是,如何引用已更改的节点?我尝试了几种方法都无济于事。

编辑:

这是我正在做的事情的基本想法:

function build_tree(obj, depth) {
    for (key in obj) {
        if (typeof(obj[key]) == 'object') {
            print(key + "<input type="text" value='" + obj[key] + "'>");
            build_tree(obj[key], depth + 1);
        } else 
            print(key + "<input type="text" value='" + obj[key] + "'>");
}
Run Code Online (Sandbox Code Playgroud)

现在,如何将 obj[key] 的值绑定到文本框,以便在更改值时更新 Javascript 对象?

html javascript json

5
推荐指数
1
解决办法
7545
查看次数

JavaScript对象引用

我遇到了Javascript对象文字的问题.

我想在其中一个函数中引用该对象:

var Obj = {
    name : "Johnny",
    dumb : function() {
        alert(this.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

可悲的是,"哑"功能也是一个对象.因此,由于dumb()没有'name'属性,因此它将返回undefined.

我该如何解决这个问题?

javascript

4
推荐指数
2
解决办法
5732
查看次数

6502中有哪些使用控制流的方法?

我试图了解6502组装中的控制流程。

说我有以下代码:

    ControlFlow:
      lda mem
      cmp #1
      bne .sub_one

      cmp #2
      bne .sub_two

      .sub_one:
        ; sub routine one goes here
        jmp .done ; <-------------- without this jmp, .sub_two will execute

      .sub_two:
       ; sub routine two goes here

      .done:

      rts
Run Code Online (Sandbox Code Playgroud)

就个人而言,我很喜欢switch语句或其他控制流结构。上面的JMP也与我有关。似乎有一种更好的方法来处理多种情况,而无需使用此类意大利面条式代码。

assembly 6502 retro-computing

4
推荐指数
1
解决办法
2186
查看次数

如何将 PNG 转换为 1 位 BMP

所以,我试图了解 PNG 到 BMP 转换实际上是如何发生的。我使用在线工具创建了以下 8x8 像素 PNG:

在此输入图像描述

然后我在 OSX 终端中使用 ImageMagik 工具执行转换:

$ convert -monochrome pic.png pic.bmp

之后,我对图像进行了十六进制转储:

$ hexdump -C pic.bmp 00000000 42 4d 4a 01 00 00 00 00 00 00 8a 00 00 00 7c 00 |BMJ...........|.| 00000010 00 00 08 00 00 00 08 00 00 00 01 00 18 00 00 00 |................| 00000020 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 …

png image imagemagick bmp

3
推荐指数
1
解决办法
9751
查看次数

如何使用布尔运算将位设置为0?

仍然是6502装配中按位操作的新手.我想有一个有8个标志的字节.这将存储我的元精灵的状态.

我希望能够在不改变其他标志的情况下设置特定标志.

我知道如何使用ORA将它们设置为一个:

  lda status
  ora #%00000001 ; set bit 0 to true
  sta status
Run Code Online (Sandbox Code Playgroud)

我知道如何使用EOR来切换它们:

  lda status
  eor #%00000001 ; if bit 0 = true, then bit 0 = false and vise versa
  sta status
Run Code Online (Sandbox Code Playgroud)

最后,我知道如何判断一下是否属实:

  lda status
  and #%00000001 ; if bit 0 = true then set overflow flag to true
Run Code Online (Sandbox Code Playgroud)

但是如何将特定标志设置为0,而不更改任何其他标志?即使我使用了AND,我如何强制它将所需的位设置为0?

谢谢,我确定我错过了一些简单的东西.

assembly 6502

1
推荐指数
1
解决办法
1143
查看次数

标签 统计

6502 ×2

assembly ×2

javascript ×2

bmp ×1

hex ×1

html ×1

image ×1

imagemagick ×1

json ×1

png ×1

regex ×1

retro-computing ×1

ruby ×1