如何使用 Ruby 替换文本文件中每个字符的高位?

发布于 2024-12-20 03:15:07 字数 341 浏览 1 评论 0原文

我需要将源文件从旧的 CAN-8 系统转换为标准 ASCII 或从标准 ASCII 转换。

CAN-8 文件的每个字节的高位为 (0x80)。

所以我需要做一些类似的事情:

f=File.new
can8=f.read

...用变量 can8 做一些事情

当我显示 can8 变量时,它看起来像 "\xC1\xC2\xC3",我需要将其转换为 "ABC" ("\x41\x42\x43")

Mike

I need to convert source files from an old CAN-8 system to/from standard ASCII.

The CAN-8 files have each byte with the high bit on (0x80).

So I need to do something like:

f=File.new
can8=f.read

... do something with variable can8

When I display the can8 variable it looks like "\xC1\xC2\xC3", I need to convert that to "ABC" ("\x41\x42\x43")

Mike

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终止放荡 2024-12-27 03:15:07

这是一种方法:

original_string = "\xC1\xC2\xC3"
converted_string = original_string.bytes.collect { |b| (b & 0x7f).chr }.join

您没有指定 Ruby 版本,因此我假设您使用的是 1.9 或更高版本。

Here is one way to do it:

original_string = "\xC1\xC2\xC3"
converted_string = original_string.bytes.collect { |b| (b & 0x7f).chr }.join

You didn't specify a Ruby version, so I will assume you are using 1.9 or later.

对你而言 2024-12-27 03:15:07

下面的小脚本似乎可以完成这项工作:

File.open("/etc/passwd").each_byte { |char|
    print (char & 0x7F).chr()
}

char & 0x7F 关闭高位,chr() 将数字恢复为字符。

The following little script seems to do the job:

File.open("/etc/passwd").each_byte { |char|
    print (char & 0x7F).chr()
}

The char & 0x7F turns off the high-bit, and chr() turns the number back into a character.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文