如何在游戏制作者中将字符串转换为二进制表示形式?
How to convert string to binary representation in game maker?
我找到了一个将二进制转换为字符串的脚本,但是如何输入字符串并获得二进制表示形式?所以说我输入 "P" 我希望它输出 01010000 作为字符串。
我有这个,但这不是我想要做的 - 它将包含二进制数的字符串转换为该数字的实际值:
///string_to_binary(string)
var str = argument0;
var output = "";
for(var i = 0; i < string_length(str); i++){
if(string_char_at(str, i + 1) == "0"){
output += "0";
}
else{
output += "1";
}
}
return real(output);
提示:搜索GML或其他语言术语,这些问题已回答多次。另外请检查您的标签,因为它是 IDE 标签,而不是语言标签。
我自己不熟悉 GML,但快速搜索显示:
至少半官方的方法是这样的:http://www.gmlscripts.com/script/bytes_to_bin
/// bytes_to_bin(str)
//
// Returns a string of binary digits, 1 bit each.
//
// str raw bytes, 8 bits each, string
//
/// GMLscripts.com/license
{
var str, bin, p, byte;
str = argument0;
bin = "";
p = string_length(str);
repeat (p) {
byte = ord(string_char_at(str,p));
repeat (8) {
if (byte & 1) bin = "1" + bin else bin = "0" + bin;
byte = byte >> 1;
}
p -= 1;
}
return bin;
}
GML 论坛(有几个例子)https://www.reddit.com/r/gamemaker/comments/4opzhu/how_could_i_convert_a_string_to_binary/
///string_to_binary(string)
var str = argument0;
var output = "";
for(var i = 0; i < string_length(str); i++){
if(string_char_at(str, i + 1) == "0"){
output += "0";
}
else{
output += "1";
}
}
return real(output);
以及其他语言示例:
C++ Fastest way to Convert String to Binary?
#include <string>
#include <bitset>
#include <iostream>
using namespace std;
int main(){
string myString = "Hello World";
for (std::size_t i = 0; i < myString.size(); ++i)
{
cout << bitset<8>(myString.c_str()[i]) << endl;
}
}
Java: Convert A String (like testing123) To Binary In Java
String s = "foo";
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes)
{
int val = b;
for (int i = 0; i < 8; i++)
{
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
System.out.println("'" + s + "' to binary: " + binary);
JS: How to convert text to binary code in JavaScript?
function convert() {
var output = document.getElementById("ti2");
var input = document.getElementById("ti1").value;
output.value = "";
for (var i = 0; i < input.length; i++) {
output.value += input[i].charCodeAt(0).toString(2) + " ";
}
}
我正在寻找一个简单的 GML 脚本来将十进制转换为二进制和 return 数组中的位。我没有找到任何满足我需要和喜欢的东西,所以我自己动手。简短而甜美。
第一个参数是十进制数(字符串或十进制),第二个参数是位长度。
// dec_to_bin(num, len);
// argument0, decimal string
// argument1, integer
var num = real(argument0);
var len = argument1;
var bin = array_create(len, 0);
for (var i = len - 1; i >= 0; --i) {
bin[i] = floor(num % 2);
num -= num / 2;
}
return bin;
用法:
dec_to_bin("48", 10);
输出:
{ { 0,0,0,0,1,1,0,0,0,0 }, }
我认为你说的二进制是计算机使用的二进制,如果是这样,就使用普通二进制并添加一种标识。
binary其实很简单,而不是大多数人想的那样。
每个数字代表前一个数字 *2 (2¹, 2², 2³...) 所以我们得到:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512...
翻转得到:
...512, 256, 128, 64, 32, 16, 8, 4, 2, 1
每个数字都用 1“激活”,加上所有激活的数字,这就是值。
好的,所以二进制基本上是另一种数字系统,它不像代码或其他东西。那么字母和其他字符是如何计算的?
他们不是 ;-;
我们只是将 then 表示为他们在字母表上的顺序,所以:
a=1
b=2
c=3
...
这意味着“b”在二进制中是“10”,但“2”也是“10”。这就是计算机二进制输入的地方。
他们只是在实际号码前加了一个标识,所以:
letter_10 = b
number_10 = 2
signal_10 = "
等等,但是如果那是二进制,上面不能有字母,而是使用另一个 0 和 1,所以:
011_10 = b
0011_10 = 2
001_10 = "
计算机也无法知道数字的开始和结束位置,因此您必须始终使用相同数量的数字,即 8。现在我们得到:
011_00010 = b
0011_0010 = 2
001_00010 = "
然后再次删除“_”,因为计算机将只使用 0 和 1。完成了!
所以我的意思是,只需使用您拥有的代码并将 00110000 添加到值中,或者如果您想将这些数字转换为我想要的字母,只需添加 01100000
如果你有字母并想要二进制,首先将字母转换为数字,因为它只知道字母不从 1 开始,大写字母从 64 开始,非大写字母在96.
ord("p")=112
112-96=16
16 in binary is 10000
10000 + 01100000 = 01110000
"p" in binary is 01110000
ord("P")=80
80-64=16
16 in binary is 10000
10000 + 01000000 = 01010000
"P" in binary is 01010000
这只是对代码应该做什么的解释,实际上我正在寻找一种转换二进制的简单方法,因为我无法理解你展示的大部分代码。
(011)
1000 1111 10000 101 1001 1000 101 1100 10000 101 100
我找到了一个将二进制转换为字符串的脚本,但是如何输入字符串并获得二进制表示形式?所以说我输入 "P" 我希望它输出 01010000 作为字符串。
我有这个,但这不是我想要做的 - 它将包含二进制数的字符串转换为该数字的实际值:
///string_to_binary(string)
var str = argument0;
var output = "";
for(var i = 0; i < string_length(str); i++){
if(string_char_at(str, i + 1) == "0"){
output += "0";
}
else{
output += "1";
}
}
return real(output);
提示:搜索GML或其他语言术语,这些问题已回答多次。另外请检查您的标签,因为它是 IDE 标签,而不是语言标签。
我自己不熟悉 GML,但快速搜索显示:
至少半官方的方法是这样的:http://www.gmlscripts.com/script/bytes_to_bin
/// bytes_to_bin(str)
//
// Returns a string of binary digits, 1 bit each.
//
// str raw bytes, 8 bits each, string
//
/// GMLscripts.com/license
{
var str, bin, p, byte;
str = argument0;
bin = "";
p = string_length(str);
repeat (p) {
byte = ord(string_char_at(str,p));
repeat (8) {
if (byte & 1) bin = "1" + bin else bin = "0" + bin;
byte = byte >> 1;
}
p -= 1;
}
return bin;
}
GML 论坛(有几个例子)https://www.reddit.com/r/gamemaker/comments/4opzhu/how_could_i_convert_a_string_to_binary/
///string_to_binary(string)
var str = argument0;
var output = "";
for(var i = 0; i < string_length(str); i++){
if(string_char_at(str, i + 1) == "0"){
output += "0";
}
else{
output += "1";
}
}
return real(output);
以及其他语言示例:
C++ Fastest way to Convert String to Binary?
#include <string>
#include <bitset>
#include <iostream>
using namespace std;
int main(){
string myString = "Hello World";
for (std::size_t i = 0; i < myString.size(); ++i)
{
cout << bitset<8>(myString.c_str()[i]) << endl;
}
}
Java: Convert A String (like testing123) To Binary In Java
String s = "foo";
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes)
{
int val = b;
for (int i = 0; i < 8; i++)
{
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
System.out.println("'" + s + "' to binary: " + binary);
JS: How to convert text to binary code in JavaScript?
function convert() {
var output = document.getElementById("ti2");
var input = document.getElementById("ti1").value;
output.value = "";
for (var i = 0; i < input.length; i++) {
output.value += input[i].charCodeAt(0).toString(2) + " ";
}
}
我正在寻找一个简单的 GML 脚本来将十进制转换为二进制和 return 数组中的位。我没有找到任何满足我需要和喜欢的东西,所以我自己动手。简短而甜美。
第一个参数是十进制数(字符串或十进制),第二个参数是位长度。
// dec_to_bin(num, len);
// argument0, decimal string
// argument1, integer
var num = real(argument0);
var len = argument1;
var bin = array_create(len, 0);
for (var i = len - 1; i >= 0; --i) {
bin[i] = floor(num % 2);
num -= num / 2;
}
return bin;
用法:
dec_to_bin("48", 10);
输出:
{ { 0,0,0,0,1,1,0,0,0,0 }, }
我认为你说的二进制是计算机使用的二进制,如果是这样,就使用普通二进制并添加一种标识。
binary其实很简单,而不是大多数人想的那样。 每个数字代表前一个数字 *2 (2¹, 2², 2³...) 所以我们得到:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512...
翻转得到:
...512, 256, 128, 64, 32, 16, 8, 4, 2, 1
每个数字都用 1“激活”,加上所有激活的数字,这就是值。
好的,所以二进制基本上是另一种数字系统,它不像代码或其他东西。那么字母和其他字符是如何计算的?
他们不是 ;-;
我们只是将 then 表示为他们在字母表上的顺序,所以:
a=1
b=2
c=3
...
这意味着“b”在二进制中是“10”,但“2”也是“10”。这就是计算机二进制输入的地方。
他们只是在实际号码前加了一个标识,所以:
letter_10 = b
number_10 = 2
signal_10 = "
等等,但是如果那是二进制,上面不能有字母,而是使用另一个 0 和 1,所以:
011_10 = b
0011_10 = 2
001_10 = "
计算机也无法知道数字的开始和结束位置,因此您必须始终使用相同数量的数字,即 8。现在我们得到:
011_00010 = b
0011_0010 = 2
001_00010 = "
然后再次删除“_”,因为计算机将只使用 0 和 1。完成了!
所以我的意思是,只需使用您拥有的代码并将 00110000 添加到值中,或者如果您想将这些数字转换为我想要的字母,只需添加 01100000
如果你有字母并想要二进制,首先将字母转换为数字,因为它只知道字母不从 1 开始,大写字母从 64 开始,非大写字母在96.
ord("p")=112
112-96=16
16 in binary is 10000
10000 + 01100000 = 01110000
"p" in binary is 01110000
ord("P")=80
80-64=16
16 in binary is 10000
10000 + 01000000 = 01010000
"P" in binary is 01010000
这只是对代码应该做什么的解释,实际上我正在寻找一种转换二进制的简单方法,因为我无法理解你展示的大部分代码。
(011) 1000 1111 10000 101 1001 1000 101 1100 10000 101 100