一、将整数转成字符:

String.fromCharCode(17496>>8,17496&0xFF,19504>>8,19504&0xFF,12848>>8,12848&0xFF,13360>>8,13360&0xFF,17969>>8,17969&0xFF,12592>>8,12592&0xFF,12337>>8,12337&0xFF,14592>>8,14592&0xFF)

//结果:DXL02040F110019

二、将json传过来的数据, unicode 编码的字符转成普通字符:

function ascii2native(asciicode) {
asciicode = asciicode.split("\\u");
var nativeValue = asciicode[0];
for (var i = 1; i < asciicode.length; i++) {
var code = asciicode[i];
nativeValue += String.fromCharCode(parseInt("0x" + code.substring(0, 4)));
if (code.length > 4) {
nativeValue += code.substring(4, code.length);
}
}
return nativeValue;
}

//调用

ascii2native("D\u0000\u0000\u0000X\u0000\u0000\u0000L\u0000\u0000\u00000\u0000\u0000\u00002\u0000\u0000\u00000\u0000\u0000\u00004\u0000\u0000\u00000\u0000\u0000\u0000F\u0000\u0000\u00001\u0000\u0000\u00001\u0000\u0000\u00000\u0000\u0000\u00000\u0000\u0000\u00001\u0000\u0000\u00009\u0000\u0000\u0000\u0000\u0000\u0000\u0000")

//结果:DXL02040F110019

下面是摘抄的:

将十进制数字 97 (ASCII 字符 a)存入文件,然后读出来。

admin  2012-10-23
 2
主要考察97在内存中,和文件中的字节序问题。
还有 int char 的区别。
 
用C语言实现:
 
vim 1.c
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main() {
        FILE *fp;
        int a[1] = {97}; // 这个数组只存放一个数:97
 
        fp = fopen("./1.data", "wb");
        fwrite(a, 4, 1, fp);
        fclose(fp);
 
        return 0;
 
}

gcc 1.c

hexdump -C a.out
[root@localhost ~]# hexdump -C 1.data
00000000 61 00 00 00 |a...|
00000004

可以看到是逆序存放的,0x61 转为十进制便是 97, 也就是 ascii 字符 a。

 
然后我们来从文件中读取这个值:
vim 2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
int main() {
        FILE *fp;
        int a[4] = {97, 98, 99, 100};
        char c[16];
 
        fp = fopen("./1.data", "rb");
        fread(c, 16, 1, fp);
        fclose(fp);
 
        int i;
        for(i=0; i<4; i++) {
                printf("%02x ", c[i]);
        }
 
        printf("\r\n------------\r\n");
 
        for(i=0; i<1; i++) {
                printf("%d", a[i]);
        }
        return 0;
 
}<br>

gcc 2.c && ./a.out

输出:

[root@localhost ~]# ./a.out 
61 00 00 00 
------------
97
 
总结一下:
1. 文件忠实的保存了内存中的数据,怎么读就怎么写即可。
2. intel x86 litter-endian int 内存中的字节序的为逆序(char 为正序)。网络字节序,文件字节序都为正序。
 
 
用PHP实现将 97 存入文件:
1
2
3
4
<?php
$s = pack("L*", 97);
file_put_contents('./1.data', $s);
?>
如果一次要存放一堆怎么办?
pack("L*", array(97, 98, 99, 100)); // 这样是错误的!结果是 array() 转为的数值 1
eval() 不利于 cache ,最好别用。
 
实现了一个支持数组的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function int_to_string($arr) {
        $s = '';
        foreach($arr as $v) {
                $a = sprintf('%08x', $v);
                $b = '';
                // int 在内存中为逆序存放
                $b .= chr(base_convert(substr($a, 6, 2), 16, 10));
                $b .= chr(base_convert(substr($a, 4, 2), 16, 10));
                $b .= chr(base_convert(substr($a, 2, 2), 16, 10));
                $b .= chr(base_convert(substr($a, 0, 2), 16, 10));
                //echo $a;
                $s .= $b;
        }
        return $s;
}

js中将 整数转成字符,,将unicode 编码后的字符还原出来的方法。的更多相关文章

  1. Python如何将字符和Unicode编码转变

    小小总结一下,以防过几天忘记,自己的复习资料,如果能帮到大家,也是有所作用!! 1,字符转化为Unicode编码方法: ord("字符") ord("A") o ...

  2. PHP解码unicode编码的中文字符

    问题背景:晚上在抓取某网站数据,结果在数据包中发现了这么一串编码的数据:"......\u65b0\u6d6a\u5fae\u535a......www.jinyuanbao.cn" ...

  3. php正确解码javascript中通过escape编码后的字符

    js的escape如何在PHP中来解呢? 下面的这个函数可以正确的解析,网上有不少unescape的函数,但好用的不多. 这是很久以前收集的一个,不知道谁写的了,但经过测试没有问题~ function ...

  4. js中四舍五入保留两位效数,js中将Number转换成字符类型

    今天在写代码的时候遇到了点问题,特意记下,以免忘记!四舍五入方法: // num为传入的值,n为保留的小数位 function fomatFloat(num,n){ var f = parseFloa ...

  5. js中将字符串转换成json的方式

    1.eval 方式解析,实际中用的还是比较少 function evalJson(str){ var json = eval('(' + str + ')'); return json; } 2.使用 ...

  6. js中将字符串转换成json的三种方式

    1,eval方式解析,恐怕这是最早的解析方式了.如下: function strToJson(str){ var json = eval('(' + str + ')'); return json; ...

  7. C# 获取字符的Unicode编码

    using UnityEngine;using System.Collections;using System.Collections.Generic; List<); string chars ...

  8. 字符串及其操作,字符的Unicode编码

    plainText=input('message:') for c in plainText: print(chr(ord(c)-3),end='') plainText=input('message ...

  9. PHP-解码unicode编码的中文字符

    在Python中使用 "\uxxxx".decode("unicode_escape") 1. class Helper_Tool { public stati ...

随机推荐

  1. robot framework -重点记录

    1.s2l打开的driver和webdriver打开的driver不是同一个driver. rf打开的浏览器.调用的是s2l的driver,而自己的库用的是webdriver的driver,这样在rf ...

  2. 《JavaScript高级程序设计》读书笔记 ---基本类型和引用类型的值

    变量.作用域和内存问题 基本类型和引用类型的值ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.在 ...

  3. WinDbg抓取程序报错dump文件的方法

    程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...

  4. 用sqlyog远程连接LINUX系统的MYSQL出现错解决方法

    无法给远程连接的用户权限问题.结果这样子操作mysql库,即可解决.在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%' ...

  5. hdu_5680_zxa and set(想法题)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5680 题意: 问题描述 zxa有一个集合A=\{a_1,a_2,\cdots,a_n\}A={a​1​ ...

  6. differences between null pointer and void pointer.

    These are two different concepts, you cannot compare them. What the difference between the skunk and ...

  7. Postgres数据库在Linux中的I/O优化

    I/O 优化1 打开 noatime方法: 修改 /etc/fstab2 调整预读方法: 查看 sudo blockdev --getra /dev/sda 设置 sudo blockdev --se ...

  8. 【重大bug】viewpager使用的时候加载数据应该在setOnPageChangeListener里加载

    [重大bug]viewpager使用的时候加载数据应该在setOnPageChangeListener里的onPageSelected里加载,我说怎么首页有数据,第二页就是空白,就是加载了但是数据不显 ...

  9. 详细,Qt Creator快捷键大全,附快捷键配置方法

    一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助(选中某一类或 ...

  10. Jquery-根据标签的name属性,获取其value值。存入对象并且转换为Json数组

    <li id="testinput" name="testinput" value="1" />分类1:标签1</li&g ...