最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[oeasy]python0020換行字符_feed_line_lf_反斜杠n_B語言_安徒生童話

2022-11-25 17:49 作者:oeasy  | 我要投稿

換行字符

回憶上次內(nèi)容

  • struct包可以讓我們使用封包格式

    • 遍歷了一次ascii碼

    • pack函數(shù)負(fù)責(zé)封包

    • unpack函數(shù)負(fù)責(zé)解封

    • 把數(shù)字封包到字節(jié)里

    • 我們通過封到不同的字節(jié)狀態(tài)

  • 還是有那片黑色的區(qū)域

    • 好像是一片黑暗森林!

    • 那里面到底有些什么秘密???

  • 我們這次向黑暗森林區(qū)域進發(fā)?。??

  • 整理行裝

  • 出發(fā)!

chr

  • 先看看"oeasy"這個字符串是如何存在的??

  • 字符都對應(yīng)著一個數(shù)字

    • 數(shù)字在計算機上究竟是如何存儲的呢?

    • 用二進制形式存儲在字節(jié)中的

  • 可以看看這個二進制形式么?

chr

  • 8bit 構(gòu)成 byte

  • 上圖的字節(jié)為

    • (0011 0101)2

    • (35)16

    • 對應(yīng)著字符'5'

  • 那字母呢???

  • abcd在內(nèi)存里長什么樣子?

文件編碼

  • 編寫一個文件

    • 寫下 abcd

    • :%!xxd

    • :%!xxd -r 變回來

  • 可以看到文件是用 2進制 方式存儲的

    • 0x61 - a

    • 0x62 - b

    • 0x63 - c

    • 0x64 - d

  • 不論是內(nèi)存、硬盤還是網(wǎng)絡(luò)傳輸

    • (0x61)16

    • (0b01100001)2

    • a 對應(yīng)

  • 圖中最后的那個 0x0a 對應(yīng)什么字符???

善用函數(shù)

  • 使用chr得到相關(guān)字符

  • 0x0a對應(yīng)的是'\n'這個字符

  • 這個字符好像在哪里見過???

回到最初

  • 想要了解這個'\n'

    • 我們還得回到最初

  • 我們回到開始的時候

  • 前面介紹過

    • BWK寫的 c 語言的第一個程序

\n

  • 注意到hello world后面的\n了么?

    • 這個方向\叫反斜杠

    • 鍵盤位置在回車鍵附近

    • 注意到hello world后面的\n了么?

    • 特別注意斜杠的方向

  • \n到底是什么????

輸出"\n"

  • \n 是一個整體

    • 占一個字節(jié)

    • 算一個字符

    • 序號是(10)10進制

    • 也就是(0x0a)16進制

    • 這就是在開篇時的abcd后面的字符

    • \n在內(nèi)存里顯示為一個.

  • 我們直接把他輸出看看

輸出

  • 輸出

#輸出\nprint("\n")#直接printprint()#查看序號ord("\n")#查看十六進制的序號hex(ord("\n"))

  • 輸出結(jié)果

  • 好像換了 2

    • 如果沒\n的話,只換 1

    • 如果有\n的話, 就換 2

  • 我們看看ascii碼表是如何定義的這第10個字符的

找到位置

  • 我們已經(jīng)身在在黑暗森林中

    • 找到了一個落腳點

  • 十進制的10 就是 十六進制的 0x0A

    • 這個數(shù)值在 ascii 碼表中意思是 LF

  • 啥意思?

搜索

  • 搜索\n得到的結(jié)果是這樣的

    • LF 意味著 Line Feed

    • 喂行

    • 喂一行紙

  • 那我真的可以用這個\n在字符中間換行嘛?

嘗試換行

#輸出字符串中帶有\(zhòng)nprint("Hello\nWorld")

  • 在游樂場中嘗試

  • 中途換行成功!

  • 可以多來幾個換行符嗎?

多來幾個

  • 就往里面加\n

#輸出字符串中帶有\(zhòng)nprint("He\nllo\nWor\nld")

  • 顯然這個 \n 就是一個換行

    • 字符串里面有個 \n 就意味著需要換 1 行

    • 他的英文是 Line Feed

    • 意思就是 新?lián)Q1行

    • 這個東西其實比 ascii 的歷史還要悠久

    • 從打字機的時代就有了

  • 為什么要有換行符呢?

換行符

  • 最最開始的時候分段落

    • 都是靠打字機輸出空格完成換行

    • 自從有了這個LineFeed

    • 一個鍵就直接換行了

    • 所以LineFeed 極大地提高了效率

  • 兩個換行符就換兩行

  • 可以使用chr函數(shù)么?

使用序號得到換行符

#輸出ascii值為10的字符chr(10)#把這個字符放在print里面輸出print("hello"+chr(10)+"world")

  • 純文本中也會有回車符么?

  • 我們?nèi)タ纯醇兾谋疚募?/p>

打開文本文檔

https://github.com/overmind1980/oeasy-python-tutorial.git

vi oeasy-python-tutorial/samples/000016/anderson_fairy_tales.txt

  • 首先下載這個倉庫

  • 然后找到其中的安德森仙話這個本書

  • 我們發(fā)現(xiàn)這個東西是318K

  • 那他有多少字符呢?

字符數(shù)量

  • 1個英文字符占一個字節(jié)

    • 318k大概有318000個字節(jié)

    • 大概是31.8萬個字符

  • 這就是文本文件的形式

  • 第一行的Andersen后面有應(yīng)該有兩個換行符

  • 是不是呢真有換行符呢?

字節(jié)形式

  • 所有行轉(zhuǎn)化為字節(jié)形式

    • %!xxd

  • 查找0a

    • /0a

  • 確實能夠找到那兩個換行符(0a)

  • 這可以和純文本方式對應(yīng)起來嗎?

純文本方式

  • 文本中的換行

    • 其實就是換行符的效果

  • 在文本觀看模式下是換行

  • 在字節(jié)觀看模式下是0a

  • 這本書后來被翻譯成安徒生童話

安徒生童話

  • 里面有很多耳熟能詳?shù)墓适?/p>

    • 《皇帝的新裝》

    • 《海的女兒》

    • 《丑小鴨》

    • 《紅舞鞋》

    • 《賣火柴的小女孩》

    • 《拇指姑娘》

  • 在安徒生所處的時代(1805-1875)

    • 丹麥仍是一個君主專制主義社會

    • 20年代經(jīng)濟衰退

    • 童話用兒童視角透視復(fù)雜生活

    • 萬物有靈

    • 風(fēng)趣幽默

  • Jean Hersholt

    • 將160個故事從丹麥文翻譯成英文

  • 劉半農(nóng) 1914年

    • 翻譯了《皇帝的新衣》開始

  • 葉君健 1944年到1949年

    • 翻譯了 安徒生童話全集

  • 互聯(lián)網(wǎng)時代

    • 英文版安徒生童話被谷騰堡項目所收錄

落實

  • 文檔當(dāng)中就是用0和1來表示字符的

  • 如下圖所示

    • 文字是藍(lán)色的

    • 字節(jié)是黑色的

  • 為什么\n會用來表示換行(Line-Feed)呢?

追溯歷史

  • c語言 中的 \n 來自于什么呢?

    • 來自于 B語言

    • B語言 是里奇和湯普遜最早開發(fā) unix 的語言

    • B語言 1969 年 就 運行在bell實驗室PDP-8

  • 1971 年里奇和湯普遜開始對于 B語言 進行改造

    • 改名叫 c語言

    • 在新買的 PDP-11 上用 B語言B語言 寫擴展,稱之為 NewB

    • 1973 年 NewB 基本主體完成

    • 所以 c 其實是 NewB

  • 他們用手頭的編譯器和c語言PDP-11 重寫了一個 Unix Kernel

    • 機器語言和匯編語言本來不具有移植性

    • 就像x86的二進制程序不能直接運行在arm上

    • 需要移植

  • c語言 程序卻可以在 很多架構(gòu) 的處理器上編譯運行

    • 也就是今天所說的交叉編譯

    • 只要那種架構(gòu)的處理器具有對應(yīng)的 c語言編譯器和庫

    • 那就能順利編譯成針對該處理器架構(gòu)的二進制程序

    • 甚至能實現(xiàn)跨平臺編譯

    • 這就是 c語言 在當(dāng)時能夠發(fā)展的原因

  • c語言 ?源自 B語言

  • B語言 也不是憑空創(chuàng)造的

    • 源自什么呢?

Basic Combined Programming Language(BCPL)

  • B語言 源自BCPL(Basic Combined Programming Language)

    • 1967 年由劍橋大學(xué)的 Matin Richards 制作

  • 在同樣由劍橋大學(xué)開發(fā)的 CPL語言 上改進而來

    • BCPL 最早被用做牛津大學(xué)的 OS6操作系統(tǒng) 上面的開發(fā)工具

  • 后來通過美國貝爾實驗室的改進和推廣成為了 UNIX 上的常用開發(fā)語言

    • 最早 BCPL 語言的樣子就有個類似于l(ine)f(eed)的符號

    • 這是關(guān)于換行符表示法 最早的記錄

    • 當(dāng)時的換行符長什么樣呢?

BCPL的換行符

  • 當(dāng)時的換行符長成這樣

    • !*n

  • 上述程序的目是

    • 輸出 hello,world

    • 然后再來個回車

  • 所以hello world

    • 并不是c語言的發(fā)明

    • 而是從c語言的爺爺bcpl那時候就有了

    • 并且從bcpl時代就已經(jīng)作為迷因(meme)開始傳播

  • python虛擬機的可執(zhí)行文件

  • 也就是pyc文件是如何理解換行符的呢?

反匯編(disassemble)

  • 觀察一下

  • \n出現(xiàn)在字符串常量中

  • 能在pyc中找到這個常量么?

先編譯

  • 將py文件編譯成pyc文件

  • 再觀察

pyc文件

  • 打開pyc文件

  • 確實能夠找到a和s之間的\n

  • 也就是(0a)16進制

  • 任務(wù)完成?。。?/p>

總結(jié)

  • \n 就是換行符號

    • 換行符對應(yīng)著 ascii 字符的代碼是(10)10進制

    • 換行符的英文是 LF

    • 意思是Line Feed

  • 我們可以在《安徒生童話》的文本中

    • 找到每個字符對應(yīng)的字節(jié)形態(tài)

  • 不光txt文件是文件

    • 我們的python游樂場本質(zhì)上也是一個二進制可執(zhí)行的文件

    • 這個文件在哪?

  • 我們可以讀懂這個可執(zhí)行文件嗎???

  • 我們下次再說!??

  • 藍(lán)橋->https://www.lanqiao.cn/teacher/3584

  • github->https://github.com/overmind1980/oeasy-python-tutorial

  • gitee->https://gitee.com/overmind1980/oeasypython

  • 視頻->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy



[oeasy]python0020換行字符_feed_line_lf_反斜杠n_B語言_安徒生童話的評論 (共 條)

分享到微博請遵守國家法律
文化| 阿城市| 鄂伦春自治旗| 南陵县| 冀州市| 高州市| 衡山县| 吉木萨尔县| 安塞县| 彭泽县| 临沂市| 留坝县| 桑日县| 濉溪县| 乐业县| 海安县| 万全县| 绥滨县| 玉山县| 峨眉山市| 锡林郭勒盟| 昌宁县| 天台县| 巍山| 汝阳县| 吴江市| 云安县| 克山县| 济南市| 岐山县| 讷河市| 宜昌市| 沙田区| 林周县| 靖江市| 宜良县| 会理县| 辽宁省| 客服| 海伦市| 来凤县|