**交上去坐等答辯畢業,於是閒來看看這本書。
書裡的**用python 2.5 + win32系統,我手頭的是python3.4 + win64系統,所以會有點不一樣,就當做是讀後實踐的考驗了。在這裡記錄一下遇到的問題,也方便後來參考吧。
廢話不多說,第一章,匯入ctypes並呼叫printf。
書中**:
from ctypes import *
msvcrt = cdll.msvcrt
mes_string = "hello\n"
msvcrt.printf("testing: %s", mes_string)
然而實際這麼打的時候,輸入只有乙個字元t
處理字串過程中若遇到'\0'一般認為是結尾,python3改為預設寬字元處理字元,比如,一般情況下'a'是乙個位元組儲存0x61,而寬位元組用兩個位元組表示為0x0061,若儲存時倒敘則為0x6100,printf函式預設單位元組處理,所以只列印乙個字元遇到'\0'後認為結束。
遂改為:
from ctypes import *
msvcrt = cdll.msvcrt
mes_string = "hello\n"
msvcrt.wprintf("testing: %s", mes_string)
搞定。
Python灰帽子筆記一
動態鏈結庫本身是一些經過編譯的二進位制檔案,之在執行時才會被連線進主程序。在windows下這些二進位制檔案被稱為動態鏈結庫 dll 而在linux下這些庫檔案被稱為共享物件 so,shared object 無論哪種平台,這些二進位制檔案都是通過匯出函式名稱的方式來呈現它們所包含的函式。這些由鏈結...
Python灰帽子筆記二
通用暫存器 暫存器可以被認為是位於cpu上的小型儲存器。cpu獲取資料的最快方式是直接訪問暫存器。在x86指令集中,乙個cpu具有8個通用暫存器 eax,edx,ecx,esi,edi,ebp,esp,ebx。每乙個都被安排了特定用途。cpu在執行某些指令時需要特點的暫存器協作以高效地完成其指令執行...
Python 讀書筆記 1
字串 命名和使用 首字母不能為數字 修改字串的大小寫 tittle 首字母大寫 upper 全部大寫 lower 全部小寫 合併字串 加號 使用製表或者換行符新增空白 t n 刪除空白 rstript 刪除右邊 lstript 刪除左邊 stript 刪除兩端 整數 加 減 乘 除 其中 2乘表示平...