use*_*388 8 matlab non-ascii-characters
我有三个字符(大于127),我需要在二进制文件中写它.
出于某种原因,MATLAB和PHP/Python倾向于编写不同的字符.
对于Python,我有:
s = chr(143)+chr(136);
f = open('pythonOut.txt', 'wb');
f.write(s);
f.close();
Run Code Online (Sandbox Code Playgroud)
对于MATLAB,我有:
s = strcat(char(143),char(136));
fid = fopen('matlabOut.txt');
fwrite(fid, s, 'char');
fclose(fid);
Run Code Online (Sandbox Code Playgroud)
当我比较这两个文件时,它们是不同的.(使用diff和/或cmp命令).
更多,当我这样做
disp(char(hex2dec('88'))) //MATLAB prints
print chr(0x88) //PYTHON prints ˆ
Run Code Online (Sandbox Code Playgroud)
两种产出都不同.我想让我的MATLAB代码与Python相同.MATLAB代码有什么问题?
您正在尝试显示扩展 ASCII 字符,即ASCII 数字大于 128 的符号。MATLAB 内部不使用扩展 ASCII,而是使用 16 位 Unicode。
如果要写入与 Python 脚本中相同的值,请使用native2unicode获取所需的字符。例如,native2unicode(136)返回^.