Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3ba62e2

Browse files
committed
Untracked commits
1 parentfa05d76 commit3ba62e2

18 files changed

+2762
-2762
lines changed

‎LICENSE‎

Lines changed: 674 additions & 674 deletions
Large diffs are not rendered by default.

‎README.md‎

Lines changed: 103 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,103 @@
1-
#pyBjson
2-
Un archivo BJSON es en escencia la forma binaria de un JSON usado en MC3DS Edition
3-
4-
#Estructura
5-
##Estructura JSON
6-
La primera parte del archivo es donde se define la estructura JSON, donde cada elemento se representa por un conjunto de 3 números enteros de 32 bits.
7-
8-
Antes inicia con un entero de 32 bits que representa la longitud de objetos que posee la estructura. Seguido de eso ya vienen los objetos en orden de la estructura original del archivo JSON.
9-
10-
Los tipos de datos que puede contener son los siguientes, includia su estructura.
11-
12-
###Estructura base
13-
```
14-
int32 int32 int32
15-
Data type Value 1 Value 2
16-
```
17-
###Estructuras especificas
18-
####Nulo - null
19-
```
20-
int32 int32 int32
21-
0 0 0
22-
```
23-
####Booleano - boolean
24-
```
25-
int32 int32 int32
26-
1 (0|1)=(false|true) 0
27-
```
28-
####Entero - integer
29-
```
30-
int32 int32 int32
31-
2 Value 0
32-
```
33-
####Flotante - float
34-
```
35-
int32 flt32 int32
36-
3 Value 0
37-
```
38-
####Array
39-
```
40-
int32 int32 int32
41-
4 Lenght Objects in previous arrays
42-
```
43-
Objects in previous arrays se refiere a la cantidad de objetos que hay en arrays anteriores al momento en el que se cierra un array
44-
####Cadena de texto - string
45-
```
46-
int32 int32 int32
47-
5 Hash String start position
48-
```
49-
String start position representa la posición en la que la cadena de texto inicia dentro de la siguiente sección del archivo, que es una sección que contiene todos los textos usados en la estructura, terminados con el caracter nulo
50-
####Objecto - object
51-
```
52-
int32 int32 int32
53-
6 Lenght Objects in previous objects
54-
```
55-
Objects in previous objects se refiere a la cantidad de objetos que hay en objetos anteriores al momento en el que se cierra un objeto
56-
##Cadenas de texto
57-
En esta sección se agrupan todas las cadenas de texto usadas en el archivo BJSON que se guardan como valores, eso significa que no incluye el texto de las cabeceras, las cuales se encuentran en otra sección.
58-
59-
Las cadenas de texto están terminadas por el caractér nulo.
60-
61-
La sección inicia con un entero de 32 bits que representa la cantidad de caracteres totales en la sección. Seguido se encuentran las cadenas de texto.
62-
##Índices de arrays
63-
En esta sección se encuentran todos los índices de los elementos que se encuentran en un array, se encuentran agrupados según el orden en el que se hayan cerrados los arrays, lo que significa que primero van a estar los índices del primer array que haya estado y se haya cerrado primero en el archivo JSON.
64-
65-
Los elementos de esta sección están representados por un solo entero de 32 bits que representa el índice del elemento en la estructura, este índice se obtiene según el orden en el que haya aparecido en el JSON y es absoluto respecto a todos los demás elementos del JSON, significa que no habrán índices repetidos en esta sección nunca
66-
67-
La sección inicia, como en las demás, con un entero de 32 bits que representa la cantidad de índices que hay en total, en la sección.
68-
##Key values
69-
En esta sección se encuentran definidas todos los key values o cabeceras.
70-
71-
Es decir, si tienes en un JSON:
72-
```
73-
{
74-
"my_number": 2
75-
}
76-
```
77-
"my_number" estará definido en esta sección.
78-
79-
El propósito de esta sección es la búsqueda rápida de información mediante el uso de keys.
80-
81-
Cada key tiene una estructura parecida a la de una cadena de texto:
82-
####Key structure
83-
```
84-
int32 int32 int32
85-
Index Hash String start position
86-
```
87-
Donde el índice sigue las mismas reglas de la sección anterior, hash es el protagonista de esta sección, y String start position funciona igual que en la sección de estructura, con diferencia que ahora el texto se busca en la siguiente sección.
88-
89-
La búsqueda de valores mediate keys se realiza usando el hash de la cadena de texto, ya que es más rápido comparar dos enteros que dos cadenas de texto. Por eso es importante el hash aquí.
90-
91-
Además, los keys se agrupan de igual forma que en la sección anterior, con una adición, y es que dentro de cada grupo los keys se tienen que ordenar de menor a mayor según su valor de hash. Lo cual está relacionado con algoritmos de búsqueda más eficientes.
92-
93-
La sección inicia con un entero de 32 bits que representa la cantidad de keys que contiene la sección
94-
##Cadenas de texto para keys
95-
Esta sección tiene las mismas reglas que la sección de Cadenas de texto, solo que aquí se almacenan las cadenas de texto que se usan en las keys.
96-
97-
Inicia con un entero de 32 bits que indica la cantidad de caracteres que contiene la sección
98-
99-
Cada cadena está terminada por el caractér nulo
100-
101-
#Notas
102-
- Para generar los hash de cada cadena se utiliza un algoritmo JOAAT de 32 bits. Antes de generar el hash, la cadena se debe convertir a todo minúsculas.
103-
- Si un objeto o array está vacía, el valor de la sumatoria se omite y en su lugar se coloca como 0.
1+
#pyBjson
2+
Un archivo BJSON es en escencia la forma binaria de un JSON usado en MC3DS Edition
3+
4+
#Estructura
5+
##Estructura JSON
6+
La primera parte del archivo es donde se define la estructura JSON, donde cada elemento se representa por un conjunto de 3 números enteros de 32 bits.
7+
8+
Antes inicia con un entero de 32 bits que representa la longitud de objetos que posee la estructura. Seguido de eso ya vienen los objetos en orden de la estructura original del archivo JSON.
9+
10+
Los tipos de datos que puede contener son los siguientes, includia su estructura.
11+
12+
###Estructura base
13+
```
14+
int32 int32 int32
15+
Data type Value 1 Value 2
16+
```
17+
###Estructuras especificas
18+
####Nulo - null
19+
```
20+
int32 int32 int32
21+
0 0 0
22+
```
23+
####Booleano - boolean
24+
```
25+
int32 int32 int32
26+
1 (0|1)=(false|true) 0
27+
```
28+
####Entero - integer
29+
```
30+
int32 int32 int32
31+
2 Value 0
32+
```
33+
####Flotante - float
34+
```
35+
int32 flt32 int32
36+
3 Value 0
37+
```
38+
####Array
39+
```
40+
int32 int32 int32
41+
4 Lenght Objects in previous arrays
42+
```
43+
Objects in previous arrays se refiere a la cantidad de objetos que hay en arrays anteriores al momento en el que se cierra un array
44+
####Cadena de texto - string
45+
```
46+
int32 int32 int32
47+
5 Hash String start position
48+
```
49+
String start position representa la posición en la que la cadena de texto inicia dentro de la siguiente sección del archivo, que es una sección que contiene todos los textos usados en la estructura, terminados con el caracter nulo
50+
####Objecto - object
51+
```
52+
int32 int32 int32
53+
6 Lenght Objects in previous objects
54+
```
55+
Objects in previous objects se refiere a la cantidad de objetos que hay en objetos anteriores al momento en el que se cierra un objeto
56+
##Cadenas de texto
57+
En esta sección se agrupan todas las cadenas de texto usadas en el archivo BJSON que se guardan como valores, eso significa que no incluye el texto de las cabeceras, las cuales se encuentran en otra sección.
58+
59+
Las cadenas de texto están terminadas por el caractér nulo.
60+
61+
La sección inicia con un entero de 32 bits que representa la cantidad de caracteres totales en la sección. Seguido se encuentran las cadenas de texto.
62+
##Índices de arrays
63+
En esta sección se encuentran todos los índices de los elementos que se encuentran en un array, se encuentran agrupados según el orden en el que se hayan cerrados los arrays, lo que significa que primero van a estar los índices del primer array que haya estado y se haya cerrado primero en el archivo JSON.
64+
65+
Los elementos de esta sección están representados por un solo entero de 32 bits que representa el índice del elemento en la estructura, este índice se obtiene según el orden en el que haya aparecido en el JSON y es absoluto respecto a todos los demás elementos del JSON, significa que no habrán índices repetidos en esta sección nunca
66+
67+
La sección inicia, como en las demás, con un entero de 32 bits que representa la cantidad de índices que hay en total, en la sección.
68+
##Key values
69+
En esta sección se encuentran definidas todos los key values o cabeceras.
70+
71+
Es decir, si tienes en un JSON:
72+
```
73+
{
74+
"my_number": 2
75+
}
76+
```
77+
"my_number" estará definido en esta sección.
78+
79+
El propósito de esta sección es la búsqueda rápida de información mediante el uso de keys.
80+
81+
Cada key tiene una estructura parecida a la de una cadena de texto:
82+
####Key structure
83+
```
84+
int32 int32 int32
85+
Index Hash String start position
86+
```
87+
Donde el índice sigue las mismas reglas de la sección anterior, hash es el protagonista de esta sección, y String start position funciona igual que en la sección de estructura, con diferencia que ahora el texto se busca en la siguiente sección.
88+
89+
La búsqueda de valores mediate keys se realiza usando el hash de la cadena de texto, ya que es más rápido comparar dos enteros que dos cadenas de texto. Por eso es importante el hash aquí.
90+
91+
Además, los keys se agrupan de igual forma que en la sección anterior, con una adición, y es que dentro de cada grupo los keys se tienen que ordenar de menor a mayor según su valor de hash. Lo cual está relacionado con algoritmos de búsqueda más eficientes.
92+
93+
La sección inicia con un entero de 32 bits que representa la cantidad de keys que contiene la sección
94+
##Cadenas de texto para keys
95+
Esta sección tiene las mismas reglas que la sección de Cadenas de texto, solo que aquí se almacenan las cadenas de texto que se usan en las keys.
96+
97+
Inicia con un entero de 32 bits que indica la cantidad de caracteres que contiene la sección
98+
99+
Cada cadena está terminada por el caractér nulo
100+
101+
#Notas
102+
- Para generar los hash de cada cadena se utiliza un algoritmo JOAAT de 32 bits. Antes de generar el hash, la cadena se debe convertir a todo minúsculas.
103+
- Si un objeto o array está vacía, el valor de la sumatoria se omite y en su lugar se coloca como 0.

‎properties.txt‎

Lines changed: 85 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,85 @@
1-
El archivo está en little endian
2-
Se separa de 4 en 4 bytes
3-
4-
Identificadores:
5-
0 - null
6-
1 - Booleano
7-
2 - Entero
8-
3 - Flotante
9-
4 - Lista
10-
5 - Cadena de texto
11-
6 - Objeto
12-
13-
Un conjunto de 4 bytes antes del inicio de la región de textos indica la longitud de caracteres
14-
de la región.
15-
16-
-- Información específica
17-
Estructuras:
18-
0 - null
19-
Identificador - 00 00 00 00
20-
Valor - 00 00 00 00
21-
Empty - 00 00 00 00
22-
1 - Booleano
23-
Identificador - 01 00 00 00
24-
Valor - (01 00 00 00) ó (00 00 00 00) True or False respectivamente
25-
Espacio vacío - 4 bytes nulos
26-
27-
2 - Entero
28-
Identificador - 02 00 00 00
29-
Valor - 4 bytes signed integrer little endian
30-
Espacio vacío - 4 bytes nulos
31-
32-
3 - Flotante
33-
Identificador - 03 00 00 00
34-
Valor - 4 bytes número en formato de 32 bits de punto flotante little endian
35-
Espacio vacío - 4 bytes nulos
36-
37-
4 - Lista
38-
Identificador - 04 00 00 00
39-
Longitud en objetos - 4 bytes unsigned integrer little endian
40-
Longitud final - 4 bytes que representan la suma de todos los elementos
41-
internos de aquellos elementos que se hayan cerrado
42-
antes que este y que sean del mismo tipo.
43-
44-
5 - Cadena de texto:
45-
Identificador - 05 00 00 00
46-
Hash - 4 bytes little endian
47-
Posición del texto en región de textos - 4 bytes unsigned integrer little endian
48-
49-
6 - Objeto
50-
Identificador - 06 00 00 00
51-
Longitud en objetos - 4 bytes unsigned integrer little endian
52-
Longitud final - 4 bytes que representan la suma de todos los elementos
53-
internos de aquellos elementos que se hayan cerrado
54-
antes que este y que sean del mismo tipo.
55-
56-
Regiones:
57-
- Estructura
58-
En esta región se encuentran almacenados todos los elementos que existen en el archivo con su tipo
59-
y estructura respectivamente, así como datos simples, sin incluir los textos pero si sus posiciones
60-
en la siguiente región. Inicia indicando la longitud en elementos que contiene la región, cada elemento
61-
se conforma por 3 conjuntos de 4 bytes. El primero será el identificador de qué tipo de dato es, el siguiente
62-
suele ser su valor, y el tercero solo se usa en tipos de datos object, array y strings.
63-
64-
- Textos
65-
Los textos usados por los elementos declarados como textos se ecnuentran almacenados en esta región.
66-
Inicia declarando con 4 bytes en little endian el largo en bytes de toda la región, seguido de todos
67-
los textos juntos, cada uno terminado con un byte nulo.
68-
69-
- Objetos sin cabeceras
70-
Esta región indica aquellos elementos que no incluyen cabeceras, se usa para aquellos elementos que
71-
se encuentran dentro de una lista. Inicia indicando la longitud de elementos de la región, seguido del
72-
índice de aquel elemento que no tiene cabecera. Cada indicador se representa igualmente con 4 bytes en
73-
little endian. Se van agregando conforme las listas se vayan cerrando. Los elementos de la lista a su
74-
vez se agregan en orden normal.
75-
76-
- Posiciones de cabeceras
77-
Aquí es donde se encuentra la información de cada cabecera y el índice del elemento al que pertenece. Inicia
78-
con 4 bytes indicando la cantidad de elementos con los que cuenta, estos elementos a su vez tienen una longitud
79-
de 3 conjuntos de 4 bytes. Los primeros 4 bytes son un checksum del texto de la cabecera, los siguientes
80-
son la posición del texto de la cabecera en la siguiente región, y el último conjunto es el índice del elemento
81-
al que pertenece. El orden en el que se van agregando elementos a esta zona se sigue investigando.
82-
83-
- Texto de las cabeceras
84-
Esta región funciona igual que la región de los Textos. La única diferencia es que almacena el texto de las
85-
cabeceras y no los valores que son strings.
1+
El archivo está en little endian
2+
Se separa de 4 en 4 bytes
3+
4+
Identificadores:
5+
0 - null
6+
1 - Booleano
7+
2 - Entero
8+
3 - Flotante
9+
4 - Lista
10+
5 - Cadena de texto
11+
6 - Objeto
12+
13+
Un conjunto de 4 bytes antes del inicio de la región de textos indica la longitud de caracteres
14+
de la región.
15+
16+
-- Información específica
17+
Estructuras:
18+
0 - null
19+
Identificador - 00 00 00 00
20+
Valor - 00 00 00 00
21+
Empty - 00 00 00 00
22+
1 - Booleano
23+
Identificador - 01 00 00 00
24+
Valor - (01 00 00 00) ó (00 00 00 00) True or False respectivamente
25+
Espacio vacío - 4 bytes nulos
26+
27+
2 - Entero
28+
Identificador - 02 00 00 00
29+
Valor - 4 bytes signed integrer little endian
30+
Espacio vacío - 4 bytes nulos
31+
32+
3 - Flotante
33+
Identificador - 03 00 00 00
34+
Valor - 4 bytes número en formato de 32 bits de punto flotante little endian
35+
Espacio vacío - 4 bytes nulos
36+
37+
4 - Lista
38+
Identificador - 04 00 00 00
39+
Longitud en objetos - 4 bytes unsigned integrer little endian
40+
Longitud final - 4 bytes que representan la suma de todos los elementos
41+
internos de aquellos elementos que se hayan cerrado
42+
antes que este y que sean del mismo tipo.
43+
44+
5 - Cadena de texto:
45+
Identificador - 05 00 00 00
46+
Hash - 4 bytes little endian
47+
Posición del texto en región de textos - 4 bytes unsigned integrer little endian
48+
49+
6 - Objeto
50+
Identificador - 06 00 00 00
51+
Longitud en objetos - 4 bytes unsigned integrer little endian
52+
Longitud final - 4 bytes que representan la suma de todos los elementos
53+
internos de aquellos elementos que se hayan cerrado
54+
antes que este y que sean del mismo tipo.
55+
56+
Regiones:
57+
- Estructura
58+
En esta región se encuentran almacenados todos los elementos que existen en el archivo con su tipo
59+
y estructura respectivamente, así como datos simples, sin incluir los textos pero si sus posiciones
60+
en la siguiente región. Inicia indicando la longitud en elementos que contiene la región, cada elemento
61+
se conforma por 3 conjuntos de 4 bytes. El primero será el identificador de qué tipo de dato es, el siguiente
62+
suele ser su valor, y el tercero solo se usa en tipos de datos object, array y strings.
63+
64+
- Textos
65+
Los textos usados por los elementos declarados como textos se ecnuentran almacenados en esta región.
66+
Inicia declarando con 4 bytes en little endian el largo en bytes de toda la región, seguido de todos
67+
los textos juntos, cada uno terminado con un byte nulo.
68+
69+
- Objetos sin cabeceras
70+
Esta región indica aquellos elementos que no incluyen cabeceras, se usa para aquellos elementos que
71+
se encuentran dentro de una lista. Inicia indicando la longitud de elementos de la región, seguido del
72+
índice de aquel elemento que no tiene cabecera. Cada indicador se representa igualmente con 4 bytes en
73+
little endian. Se van agregando conforme las listas se vayan cerrando. Los elementos de la lista a su
74+
vez se agregan en orden normal.
75+
76+
- Posiciones de cabeceras
77+
Aquí es donde se encuentra la información de cada cabecera y el índice del elemento al que pertenece. Inicia
78+
con 4 bytes indicando la cantidad de elementos con los que cuenta, estos elementos a su vez tienen una longitud
79+
de 3 conjuntos de 4 bytes. Los primeros 4 bytes son un checksum del texto de la cabecera, los siguientes
80+
son la posición del texto de la cabecera en la siguiente región, y el último conjunto es el índice del elemento
81+
al que pertenece. El orden en el que se van agregando elementos a esta zona se sigue investigando.
82+
83+
- Texto de las cabeceras
84+
Esta región funciona igual que la región de los Textos. La única diferencia es que almacena el texto de las
85+
cabeceras y no los valores que son strings.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp